wordpress部分文字管理員可見百度seo推廣首選帝搜軟件
醫(yī)院信息化與智能化系統(tǒng)(10)
這里只描述對應(yīng)過程,和可能遇到的問題及解決辦法以及對應(yīng)的參考鏈接,并不會直接每一步詳細(xì)配置
如果你想通過文字描述或代碼畫流程圖,可以試試PlantUML
,告訴GPT你的文件結(jié)構(gòu),讓他給你對應(yīng)的代碼
預(yù)約掛號微服務(wù)模塊搭建
前端知識點補充,此章節(jié)不會詳細(xì)講具體前端的每個知識點
1、EasyExcel-寫操作
首先是在后端service-cmn引入相應(yīng)依賴,接著創(chuàng)建實體類,并在對應(yīng)屬性上添加注解,設(shè)置表頭內(nèi)容
@Data
public class UserData {@ExcelProperty("用戶編號")private int uid;@ExcelProperty("用戶名稱")private String username;
}
最終實現(xiàn)寫操作
代碼
public static void main(String[] args) {//構(gòu)建數(shù)據(jù)list集合List<UserData> list = new ArrayList<>();for (int i = 0; i < 10; i++) {UserData data = new UserData();data.setUid(i);data.setUsername("lucy" + i);list.add(data);}//設(shè)置excel文件路徑和文件名稱String fileName = "C:\\Users\\666\\Desktop\\新建文件夾\\excel\\01.xlsx";//調(diào)用方法實現(xiàn)寫操作EasyExcel.write(fileName, UserData.class).sheet("用戶信息").doWrite(list);}
最終效果
2、EasyExcel-讀操作
首先需要創(chuàng)建ExcelListener
類,其繼承AnalysisEventListener
接口,并實現(xiàn)invoke
、doAfterAllAnalysed
、invokeHeadMap
等方法。
- invoke:一行一行讀取數(shù)據(jù),從第二行讀取數(shù)據(jù)
- doAfterAllAnalysed:讀取后執(zhí)行
- invokeHeadMap:當(dāng)你讀取 Excel 文件時, 可以提供
表頭的名稱
和對應(yīng)的列索引映射
在測試類使用下行代碼進行excel文件讀取
EasyExcel.read(fileName, UserData.class,new ExcelListener()).sheet().doRead();
3、EasyExcel-導(dǎo)出操作
目的:
在前端導(dǎo)出數(shù)據(jù),并導(dǎo)出到excel
在DictController
里添加方法importData
,輸入?yún)?shù)為HttpServletResponse response
,進行導(dǎo)出數(shù)據(jù)字典操作。
其中在DictService
接口中聲明并在DictServiceImpl
實現(xiàn)exportDictData
方法,實現(xiàn)具體邏輯功能。
依靠傳遞的repsonse對象,可以實現(xiàn)下載設(shè)置:
Content-disposition
頭部用于指示瀏覽器處理響應(yīng)內(nèi)容的方式。attachment 表示內(nèi)容應(yīng)該被當(dāng)作附件下載
response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf-8");// 這里URLEncoder.encode可以防止中文亂碼 當(dāng)然和easyexcel沒有關(guān)系String fileName = "dict";response.setHeader("Content-disposition", "attachment;filename="+ fileName + ".xlsx");
寫操作傳遞的類是DictEeVo.class
,它與Dict的區(qū)別是僅包含必要的字段,專注于數(shù)據(jù)的展示,去掉了與數(shù)據(jù)庫操作無關(guān)的字段(如時間和刪除標(biāo)記)
,而通過baseMapper返回的是Dict類型的List
,所以要進行循環(huán)賦值。
BeanUtils
提供了一個簡單的方式來復(fù)制對象的屬性。這個方法會將 dictEeVo 對象
的屬性值復(fù)制到 dict 對象
中,前提是這兩個對象具有相同名稱和兼容類型的屬性。
for(Dict dict : dictList) {DictEeVo dictEeVo = new DictEeVo();BeanUtils.copyProperties((dict, dictEeVo);dictVoList.add(dictEeVo);}
最后在EasyExcel中寫入dictVoList即可。
EasyExcel.write(response.getOutputStream(), DictEeVo.class).sheet("dict").doWrite(dictVoList);
前端操作
在list.vue
放置element-ui按鈕標(biāo)簽,其綁定方法exportData
在mehtods編寫該方法
它會通過將瀏覽器的當(dāng)前地址 (window.location.href)
設(shè)置為指定的 URL 來發(fā)起請求。
exportData(){//調(diào)用導(dǎo)出接口window.location.href="http://localhost:8202/admin/cmn/dict/exportData"}
4、EasyExcel-導(dǎo)入操作
目的:
在excel中寫入數(shù)據(jù),并導(dǎo)入到數(shù)據(jù)庫
在DictController
里添加方法importData
,輸入?yún)?shù)為MultipartFile file
,進行導(dǎo)入數(shù)據(jù)字典操作。
其中在DictService
接口中聲明并在DictServiceImpl
實現(xiàn)importDictData
方法,實現(xiàn)具體邏輯功能。
MultipartFile
是 Spring Framework 中的一個接口,用于處理上傳的文件。它提供了對上傳文件的抽象,允許開發(fā)者在控制器中輕松地處理文件上傳的操作。
創(chuàng)建DictListener
,并構(gòu)造器傳參basemapper
,其中basemapper用來執(zhí)行數(shù)據(jù)庫添加操作,而操作對象只能是Dict,所以調(diào)用方法對dict
進行復(fù)制操作
public DictListener(DictSetMapper dictSetMapper) {this.dictSetMapper = dictSetMapper;}...@Overridepublic void invoke(DictEeVo dictEeVo, AnalysisContext analysisContext) {//調(diào)用方法添加數(shù)據(jù)庫Dict dict = new Dict();BeanUtils.copyProperties(dictEeVo,dict);dictSetMapper.insert(dict);}
前端處理
在導(dǎo)出的element-ui代碼下面添加一行導(dǎo)入
標(biāo)簽代碼,其綁定方法importData
還希望在導(dǎo)入時,能出現(xiàn)一個彈窗,還是需要在<temple>
中添加相關(guān)代碼(放在table標(biāo)簽后)
dialogImportVisible
在默認(rèn)值設(shè)置為false,當(dāng)其為true時,彈窗出現(xiàn)
:multiple
是否上傳多個組件
:on-success="onUploadSuccess"
上傳成功調(diào)用該方法,該方法設(shè)置執(zhí)行關(guān)閉彈窗
及刷新頁面
(自己編寫的)
:action="'http://localhost:8202/admin/cmn/dict/importData'"
點擊上傳時調(diào)用該方法,附url路徑
<el-dialog title="導(dǎo)入":visible.sync="dialogImportVisible"width="480px">
<el-form label-position="right"label-width="170px"><el-form-item label="文件">
<el-upload
:multiple="false"
:on-success="onUploadSuccess"
:action="'http://localhost:8202/admin/cmn/dict/importData'"
class="upload-demo">
<el-button size="small"type="primary">點擊上傳</el-button>
<div slot="tip"class="el-upload__tip">只能上傳xls文件,且不超過500kb</div>
</el-upload>
</el-form-item></el-form>
<div slot="footer"class="dialog-footer">
<el-button @click="dialogImportVisible = false">取消
</el-button>
</div>
</el-dialog>
在數(shù)據(jù)庫中,需要把is_deleted
字段默認(rèn)值從1
改為0
,不然前端顯示不出來