EasyExcel的使用方法


一、導入依賴

<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>easyexcel</artifactId>
	<version>2.2.7</version>
</dependency>

二、編寫實體類

@Data
public class DemoData {
    @ExcelProperty(value = "學生編號", index = 0)
    private Integer sno;
    @ExcelProperty(value = "學生姓名", index = 1)
    private String sname;
}

三、寫入Excel

@Test
public void writeExcel() {
    //實現excel寫操作
    // 寫法1 JDK8+
    // since: 3.0.0-beta1
    String fileName = "F:\\online-education/student.xlsx";
    // 這里 需要指定寫用哪個class去寫,然后寫到第一個sheet,名字為模板 然后文件流會自動關閉
    // 如果這里想使用03 則 傳入excelType參數即可
    EasyExcel.write(fileName, DemoData.class).sheet("Sheet1").doWrite(getData());
}
private static List<DemoData> getData(){
    List<DemoData> list=new ArrayList<>();
    for (int i=0;i<10;i++){
        DemoData demoData = new DemoData();
        demoData.setSno(i);
        demoData.setSname("liming"+i);
        list.add(demoData);
     }
    return list;
}

四、寫入Excel並以流的方式發送給前端並下載

1.編輯響應體參數

	/**
     * 導出
     *
     * @param response
     * @param data
     * @param fileName
     * @param sheetName
     * @param clazz
     * @throws Exception
     */
    public static void writeExcel(HttpServletResponse response, List<? extends Object> data, String fileName, String sheetName, Class clazz) throws Exception {
        //表頭樣式
        WriteCellStyle headWriteCellStyle = new WriteCellStyle();
        //設置表頭居中對齊
        headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
        //內容樣式
        WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
        //設置內容靠左對齊
        contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.LEFT);
        HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);
        EasyExcel.write(getOutputStream(fileName, response), clazz).excelType(ExcelTypeEnum.XLSX).sheet(sheetName).registerWriteHandler(horizontalCellStyleStrategy).doWrite(data);
    }
	
	/**
     * 流方式響應給前端
     *
     * @param fileName
     * @param response
     * @return
     * @throws Exception
     */
    private static OutputStream getOutputStream(String fileName, HttpServletResponse response) throws Exception {
        fileName = URLEncoder.encode(fileName, "UTF-8");
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("utf8");
        response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx");
        response.setStatus(RESPONSE_SUCCESS_CODE);
        return response.getOutputStream();
    }
@PostMapping("exportExcel")
public void webWriteExcel(HttpServletResponse response) throws IOException {
         ExcelUtil.writeExcel(response, ptPartDetails, fileName, sheetName, PtPartDetail.class);
    }

五、讀取Excel

編寫監聽類並重寫所需方法

public class ExcelListener extends AnalysisEventListener<DemoData> {
    //一行一行的讀取excel內容
    @Override
    public void invoke(DemoData demoData, AnalysisContext analysisContext) {
        System.out.println("數據:"+demoData);
    }
	
    //讀取表頭內容
    @Override
    public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
        System.out.println("表頭:"+ headMap);
    }

    //讀取完成之后執行
    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {

    }
}

讀取Excel文件

@Test
    public void readExcel(){
        String fileName = "F:\\online-education/student.xlsx";
        EasyExcel.read(fileName,DemoData.class,new ExcelListener()).sheet().doRead();
    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM