使用easyExcel進行數據導出

開發大部分系統需要進行數據的導出,發現阿里的eayExcel插件極爲好用,僅需一個註解,加上幾行代碼輕鬆搞定excel導出。話不多說直接貼代碼
1、pom.xml 引入jar包

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>easyexcel</artifactId>
        <version>1.1.2-beta5</version>
    </dependency>

2、實體類必須繼承,index爲表頭順序
public class Mine extends BaseRowModel{

 /**
 * 類別
 */
@ExcelProperty(value = "類別", index = 1)
private String type;

/**
 * 名稱
 */
@ExcelProperty(value = "礦山名稱", index = 2)
private String name;

}

2、controller 入口類

/**
* 數據導出
* @param search
* @param response
*/

@RequestMapping(value = "/exportDateToExcel")
public void exportDateToExcel(Mine search, HttpServletResponse response) {
	//根據條件查詢導出的數據
    List<Mine> list = service.findAll(search, pageable).getContent();
    try {
        Map<String, List<? extends BaseRowModel>> map = new HashMap<>();
        map.put("數據信息", list);
        ExcelUtil.createExcelStreamMutilByEaysExcel(response, map, ExcelTypeEnum.XLSX, "數據信息("+ExcelUtil.fileName()+").xlsx");
    } catch (Exception e) {
        e.printStackTrace();
    }
}

2.Excel工具類
public class ExcelUtil {

/**
 * @Author jian
 * @Description 導出excel 支持一張表導出多個sheet
 * @Param OutputStream 輸出流
 * Map<String, List>  sheetName和每個sheet的數據
 * ExcelTypeEnum 要導出的excel的類型 有ExcelTypeEnum.xls 和有ExcelTypeEnum.xlsx
 */
public static void createExcelStreamMutilByEaysExcel(HttpServletResponse response, Map<String, List<? extends BaseRowModel>> SheetNameAndDateList, ExcelTypeEnum type, String fileName) throws UnsupportedEncodingException {
    try {
        response.setContentType("multipart/form-data");
        response.setCharacterEncoding("utf-8");
        response.addHeader("Content-Disposition", "attachment;filename=" + new String(fileName.replaceAll(" ", "").getBytes("utf-8"), "iso8859-1"));
        ServletOutputStream out = response.getOutputStream();
        ExcelWriter writer = new ExcelWriter(out, type, true);
        setSheet(SheetNameAndDateList, writer);
        writer.finish();
        out.flush();
        System.out.println("導出完成");
    } catch (IOException e) {
        e.printStackTrace();
    }
}

/**
* 以當前時間生成文件名
* @return
*/

public static String fileName() {
    String fileName = "";
    try {
        fileName = new String(
                (new SimpleDateFormat("yyyy-MM-dd").format(new Date())).getBytes(), "UTF-8");
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }
    return fileName;
}

/**
 * @Author jian
 * @Description //setSheet數據
 */
private static void setSheet(Map<String, List<? extends BaseRowModel>> SheetNameAndDateList, ExcelWriter writer) {
    int sheetNum = 1;
    for (Map.Entry<String, List<? extends BaseRowModel>> stringListEntry : SheetNameAndDateList.entrySet()) {
        Sheet sheet = new Sheet(sheetNum, 0, stringListEntry.getValue().get(0).getClass());
        sheet.setSheetName(stringListEntry.getKey());
        writer.write(stringListEntry.getValue(), sheet);
        sheetNum++;

    }
}

OK! 完成啦!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章