easyexcel導出excel模板
pom文件添加jar依賴
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.4</version>
</dependency>
導出excle
@GetMapping("export")
public void export(CivilizedLuckyDrawQuery query, HttpServletResponse response) {
DataResult<DrawVO> luckyDrawVODataResult = luckyDrawService.queryCivilizedList(query);
List<DrawVO> data = luckyDrawVODataResult.getData();
try {
String fileName = "excel命名_"+ LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
String sheetName = "sheet命名";
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
fileName = URLEncoder.encode(fileName, "UTF-8");
response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xls");
EasyExcel.write(response.getOutputStream(), CivilizedLuckyDrawVO.class).sheet(sheetName).doWrite(data);
} catch (IOException e) {
log.error("導出異常,e: {}", e);
}
}
導入excel
/**
* 解析excel取得數據
*
* @param tempFile
* @param suffix_flex
* @return
*/
public List<List<String>> getDatasByDealExcel(File tempFile, String suffix_flex) {
InputStream in = null;
try {
in = new FileInputStream(tempFile);
ExcelListener listener = new ExcelListener();
ExcelTypeEnum type = suffix_flex.equals(".xls") ? ExcelTypeEnum.XLS : ExcelTypeEnum.XLSX;
ExcelReader excelReader = new ExcelReader(in, type, null, listener);
excelReader.read();
//線面的獲取也是正確的
//Sheet sheet = new Sheet(1, 1);
// List<Object> list = EasyExcelFactory.read(in, sheet);
List<List<String>> datas = listener.getDatas();
return datas;
} catch (Exception e) {
} finally {
try {
if (in != null) {
in.close();
}
} catch (IOException e) {
log.error("excel文件讀取失敗, 失敗原因:{}", e);
}
}
return null;
}
ExcelListener代碼展示;
@Component
public class ExcelListener extends AnalysisEventListener {
public List<List<String>> datas = new ArrayList<>();
@Override
public void invoke(Object o, AnalysisContext analysisContext) {
List<String> stringList= (List<String>) o;
System.out.println("當前sheet"+analysisContext.getCurrentSheet().getSheetNo()+ " 當前行:" + analysisContext.getCurrentRowNum()
+ " data:" + stringList.get(0));
datas.add(stringList);//數據存儲到list,供批量處理,或後續自己業務邏輯處理。
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
public List<List<String>> getDatas() { return datas; }
public void setDatas(List<List<String>> datas) { this.datas = datas; }
}