hutool導出Excel 和 autopoi一對多導出Excel

一.hutool導出方式

1.jar包
poi-4.1.0.jar
poi-ooxml-4.1.0.jar
poi-ooxml-schemas-3.9.jar
poi-scratchpad-3.9.jar

2.方法


//        ArrayList<Map<String, Object>> rows = CollUtil.newArrayList(row1, row2);

        //通過工具類創建writer
        ExcelWriter writer = ExcelUtil.getWriter();

        //通過構造方法創建writer
        //ExcelWriter writer = new ExcelWriter("d:/writeTest.xls");

        //跳過當前行,既第一行,非必須,在此演示用
//        writer.passCurrentRow();


        //自定義標題別名
//        writer.addHeaderAlias("name", "姓名");
//        writer.addHeaderAlias("age", "年齡");
//        writer.addHeaderAlias("score", "分數");
//        writer.addHeaderAlias("isPass", "是否通過");
//        writer.addHeaderAlias("examDate", "考試時間");
        //合併單元格後的標題行,使用默認標題樣式
//        writer.merge(row1.size() - 1, "一班成績單");
        //一次性寫出內容
        writer.write(sfPatrolLogs);

        //response爲HttpServletResponse對象
        //response.setContentType("application/vnd.ms-excel;charset=utf-8");
        response.setContentType("application/octet-stream");
        //test.xls是彈出下載對話框的文件名,不能爲中文,中文請自行編碼
        response.setHeader("Content-Disposition","attachment;filename=PatrolLog.xls");
        ServletOutputStream out=response.getOutputStream();

        writer.flush(out);
        // 關閉writer,釋放內存
        writer.close();

//        return ResponseEntity.ok(Result.success(true));

二.autopoi導出方式

1.jar包
autopoi-web-1.0.2.jar

2.dto

package com.geostar.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.jeecgframework.poi.excel.annotation.ExcelCollection;

import java.io.Serializable;
import java.util.List;

/**
 * <p>
 * 導出巡查日誌
 * </p>
 */
@Data
@ApiModel(value="SF_PATROL_LOG對象", description="導出巡查日誌")
public class SfExportPatrolLogDto implements Serializable {

    private static final long serialVersionUID = 1L;

	@Excel(name = "企業名稱", width = 20,needMerge=true)
	@ApiModelProperty(value = "企業名稱")
	private String companyName;

	@Excel(name = "檢查時間", width = 10,needMerge=true,format = "yyyy-MM-dd")
	@ApiModelProperty(value = "檢查時間")
	private String patrolTime;

	@Excel(name = "整改期限", width = 10,needMerge=true)
	@ApiModelProperty(value = "整改期限")
	private String checkTime;

	@Excel(name = "生效時間", width = 10,needMerge=true)
	@ApiModelProperty(value = "生效時間")
	private String validTime;

	@Excel(name = "檢查人員", width = 10,needMerge=true)
	@ApiModelProperty(value = "檢查人員")
	private String patrolGroup;

	@ExcelCollection(name = "檢查項列表")
	private List<SfExportLogExamineDto> exportLogExamineDtoList;

	@Excel(name = "檢查結果", width = 10,needMerge=true)
	@ApiModelProperty(value = "檢查結果")
	private String isPass;


}

package com.geostar.dto;


import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;

import java.io.Serializable;


/**
 * <p>
 * 導出巡查日誌檢查項
 * </p>
 *
 * @author hll
 * @since 2019-08-05
 */
@Data
@ApiModel(value="SF_LOG_EXAMINE對象", description="導出巡查日誌檢查項")
 public class SfExportLogExamineDto implements Serializable {

    private static final long serialVersionUID = 1L;

	@Excel(name = "檢查項", width = 20)
	@ApiModelProperty(value = "檢查項")
	private String name;

	@Excel(name = "檢查內容", width = 20)
	@ApiModelProperty(value = "檢查內容")
	private String remark;

	@Excel(name = "單檢查結果", width = 10)
	@ApiModelProperty(value = "單檢查結果")
	private String examineResult;



}

2.方法

 @ApiOperation(value = "導出巡查日誌")
    @RequestMapping("exportPatrolLog")
    public ModelAndView exportPatrolLog(HttpServletRequest request, HttpServletResponse response, String companyName, String patrolTimeS, String patrolTimeE, String result,String ids){

        List<SfExportPatrolLogDto> sfPatrolLogs = sfPatrolLogService.excelQueryPatrolLog(companyName,patrolTimeS,patrolTimeE,result,ids);

        //導出
        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());

        // 導出文件名稱
        mv.addObject(NormalExcelConstants.FILE_NAME, "檢查日誌彙總");
        // 註解對象Class
        mv.addObject(NormalExcelConstants.CLASS, SfExportPatrolLogDto.class);
        // 自定義表格參數
        mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("檢查日誌彙總", "數量:  " + sfPatrolLogs.size() + "    時間:  " + patrolTimeS + "   至   " + patrolTimeE + "  備註:0是通過,1是不通過  ", "檢查日誌"));
        // 導出數據列表
        mv.addObject(NormalExcelConstants.DATA_LIST, sfPatrolLogs);
        return mv;
    }

在這裏插入圖片描述

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