2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > easyExcel使用模板填充式的导出

easyExcel使用模板填充式的导出

时间:2023-10-02 01:31:25

相关推荐

easyExcel使用模板填充式的导出

easyExcel的填充式导出与XLSTransformer的模板导出类似,都可以将复杂表格的导出简单化,不需要自己去画复杂的表头和调样式;但是在大数据量的导出远远比XLSTransformer性能好。

1、首先还是先引入easyExcel依赖:

<!-- /artifact/com.alibaba/easyexcel --><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.0-beta1</version></dependency>

2、然后在controller层进行导出的具体实现,主要包含使用模板填充的示例、多个sheet页的实现、横向数据展示的示例:

import java.io.OutputStream;import .URLEncoder;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import com.alibaba.excel.EasyExcel;import com.alibaba.excel.ExcelWriter;import com.alibaba.excel.enums.WriteDirectionEnum;import com.alibaba.excel.write.metadata.WriteSheet;import com.alibaba.excel.write.metadata.fill.FillConfig;import com.szpsbnpt.hrs.archive.dto.ArchiveDocsDTO;import com.szpsbnpt.hrs.archive.facade.ArchiveDocsFacade;import com.szpsbnpt.hrs.archive.web.vo.ArchiveDwVO;import com.szpsbnpt.hrs.archive.web.vo.FillWrapper;import com.szpsbnpt.hrs.util.FileUtil;import io.swagger.annotations.ApiImplicitParam;import io.swagger.annotations.ApiImplicitParams;import io.swagger.annotations.ApiOperation;import jade.core.dto.TableTagBean;public class TestController {@Autowiredprivate ArchiveDocsFacade archiveDocsFacade;@ApiOperation(value = "导出我的材料池")@ApiImplicitParams({@ApiImplicitParam(paramType = "query", name = "query", value = "姓名/J号", dataType = "String")})@GetMapping(value = "/exportMyArchiveList")public void exportMyArchiveList(HttpServletRequest request, HttpServletResponse response) throws Exception {response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf-8");String fileName = URLEncoder.encode("材料列表", "UTF-8");response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");OutputStream outputStream = response.getOutputStream();TableTagBean ttb = TableTagBean.getFromExt(request);List<ArchiveDocsDTO> list = archiveDocsFacade.listArchiveDocs(ttb);List<ArchiveDwVO> list2 = new ArrayList<ArchiveDwVO>();ArchiveDwVO vo = new ArchiveDwVO();vo.setDwName("单位一");list2.add(vo);vo = new ArchiveDwVO();vo.setDwName("单位二");list2.add(vo);Map<String, Object> map = new HashMap<String, Object>();// 获取模板路径String templateFileName = FileUtil.getPath() + "excel/exportArchiveList2.xls";// 创建输出的excel对象final ExcelWriter write = EasyExcel.write(outputStream).withTemplate(templateFileName).build();// 创建第一个sheel页final WriteSheet sheet1 = EasyExcel.writerSheet(0,"材料列表1").build();// 创建第二个sheel页final WriteSheet sheet2 = EasyExcel.writerSheet(1,"材料列表2").build();// 设置列表横向展示FillConfig fillConfig = FillConfig.builder().direction(WriteDirectionEnum.HORIZONTAL).build();// 使用数据横向展示的示例// write.fill(list,fillConfig,sheet1);write.fill(list, sheet1);map.put("total", "材料列表1");write.fill(map, sheet1);write.fill(list, sheet2);map.put("total", "材料列表2");write.fill(map, sheet2);// 关闭流write.finish();}}

3、创建实体对象

@Datapublic class ArchiveDocsDTO{private Integer idx;// 资料类型代码private String docType;private String docTypeName;// 姓名private String personName;// J号private String policeNo;// 身份证号private String idCard;// 编制单位名称private String dwName;// 归档状态private Integer status;private String statusName;// 归档人单位编码private String gdDwCode;private String gdDwCodeName;// 产生方式private Integer source;private String sourceName;private String taskId;// 材料名称private String docName;// 出生日期private String birthDay;}

4、模板样式,多个sheet页如果每个sheet页样式都不同需要自己手动提前为每个sheet页画模板,如果样式一样可以通过POI去拷贝;

5、最终导出结果

另外附属获取模板路径的工具类:

import java.io.File;import java.io.InputStream;public class FileUtil {public static InputStream getResourcesFileInputStream(String fileName) {return Thread.currentThread().getContextClassLoader().getResourceAsStream("" + fileName);}public static String getPath() {return FileUtil.class.getResource("/").getPath();}public static File createNewFile(String pathName) {File file = new File(getPath() + pathName);if (file.exists()) {file.delete();} else {if (!file.getParentFile().exists()) {file.getParentFile().mkdirs();}}return file;}public static File readFile(String pathName) {return new File(getPath() + pathName);}public static File readUserHomeFile(String pathName) {return new File(System.getProperty("user.home") + File.separator + pathName);}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。