導入:https://my.oschina.net/u/3774949/blog/4308820
導出:https://my.oschina.net/u/3774949/blog/4307958
不想在上面改了,太麻煩了,這裏就寫不同的部分
1.實體類(增加 converter )
/** 性別 1男 0女 */ @ColumnWidth(10) @ExcelProperty(value = "性別", index = 4,converter = SexConverter.class) private Integer sex;
2.轉換類
package com...common.easyexcel; import com.alibaba.excel.converters.Converter; import com.alibaba.excel.enums.CellDataTypeEnum; import com.alibaba.excel.metadata.CellData; import com.alibaba.excel.metadata.GlobalConfiguration; import com.alibaba.excel.metadata.property.ExcelContentProperty; /** * @author xing.li */ public class SexConverter implements Converter<Integer> { @Override public Class supportJavaTypeKey() { return Integer.class; } @Override public CellDataTypeEnum supportExcelTypeKey() { return CellDataTypeEnum.STRING; } @Override public Integer convertToJavaData(CellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception { return "男".equals(cellData.getStringValue()) ? 1 : 0; } @Override public CellData convertToExcelData(Integer value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception { return new CellData(value.equals(1) ? "男" : "女"); } }
3.導出轉換操作
ExportExcelUtils(增加標紅部分)
/** * 使用模板導出Excel到web * * @param response 響應 * @param excelName Excel名稱 * @param data 要導出的數據 * @throws Exception */ public void export2WebWithModel(HttpServletResponse response, String excelName, List data) throws Exception { InputStream inputStream = ExportExcelUtils.class.getResourceAsStream("/excel/userModel.xlsx"); ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).registerConverter(new SexConverter()).withTemplate(inputStream).build(); try { WriteSheet writeSheet = EasyExcel.writerSheet().build(); response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf-8"); excelName = URLEncoder.encode(excelName, "UTF-8"); response.setHeader( "Content-disposition", "attachment;filename=" + URLEncoder.encode(excelName, "UTF-8") + ExcelTypeEnum.XLSX.getValue()); if (!data.isEmpty()) { // 這裏還可以放一個map鍵值對 對應模板中的{{}} // 這個list對應模板中的{{.屬性名}} excelWriter.fill(data, writeSheet); } } catch (Exception e) { e.printStackTrace(); } finally { excelWriter.finish(); } }
4.導入轉換操作(標紅部分)
這裏還改變了多sheet導入(自己對比上面不同之處)
@PostMapping(value = "/....") @ApiOperation(value = "導入用戶", notes = "導入用戶") public void parsingExcel(@RequestParam(required = false, value = "file") MultipartFile file) { try { ExcelReader excelReader = EasyExcel.read(new BufferedInputStream(file.getInputStream())) .head(UserExcel.class) .build(); List<ReadSheet> sheetList = excelReader.excelExecutor().sheetList(); for (ReadSheet sheet : sheetList) { EasyExcel.read( new BufferedInputStream(file.getInputStream()), UserExcel.class, new ExcelListener(jdbc)).registerConverter(new SexConverter()) .head(UserExcel.class) .sheet(sheet.getSheetNo()) .doReadSync(); } } catch (Exception e) { e.printStackTrace(); } }