自定义生成Excel报表文件还是有很多不尽如意的地方,特别是针对复杂报表头,单元格样式,字体等操作。手写
这些代码不仅费时费力,有时候效果还不太理想。那怎么样才能更方便的对报表样式,报表头进行处理呢?答案是
使用已经准备好的Excel模板,只需要关注模板中的数据即可。

步骤

1. 制作模版文件(模版文件的路径)
2. 导入(加载)模版文件,从而得到一个工作簿
3. 读取工作表
4. 读取行
5. 读取单元格
6. 读取单元格样式
7. 设置单元格内容
8. 其他单元格就可以使用读到的样式了

1.模板样式

2.实体类

@Getter
@Setter
@NoArgsConstructor
@ToString
public class EmployeeReportResult {@ExcelAttribute(sort = 0)private String userId;@ExcelAttribute(sort = 1)private String username;private String departmentName;@ExcelAttribute(sort = 2)private String mobile;@ExcelAttribute(sort = 9)private String timeOfEntry;private String companyId;private String sex;/*** 出生日期*/private String dateOfBirth;/*** 最高学历*/@ExcelAttribute(sort = 3)private String theHighestDegreeOfEducation;/*** 国家地区*/@ExcelAttribute(sort = 4)private String nationalArea;/*** 护照号*/@ExcelAttribute(sort = 5)private String passportNo;/*** 身份证号*/private String idNumber;/*** 身份证照片-正面*/private String idCardPhotoPositive;/*** 身份证照片-背面*/private String idCardPhotoBack;/*** 籍贯*/@ExcelAttribute(sort = 6)private String nativePlace;/*** 民族*/private String nation;/*** 英文名*/private String englishName;/*** 婚姻状况*/private String maritalStatus;/*** 员工照片*/private String staffPhoto;/*** 生日*/@ExcelAttribute(sort = 7)private String birthday;/*** 属相*/@ExcelAttribute(sort = 8)private String zodiac;/*** 年龄*/private String age;/*** 星座*/private String constellation;/*** 血型*/private String bloodType;/*** 户籍所在地*/private String domicile;/*** 政治面貌*/private String politicalOutlook;/*** 入党时间*/private String timeToJoinTheParty;/*** 存档机构*/private String archivingOrganization;/*** 子女状态*/private String stateOfChildren;/*** 子女有无商业保险*/private String doChildrenHaveCommercialInsurance;/*** 有无违法违纪行为*/private String isThereAnyViolationOfLawOrDiscipline;/*** 有无重大病史*/private String areThereAnyMajorMedicalHistories;/*** QQ*/private String qq;/*** 微信*/private String wechat;/*** 居住证城市*/private String residenceCardCity;/*** 居住证办理日期*/private String dateOfResidencePermit;/*** 居住证截止日期*/private String residencePermitDeadline;/*** 现居住地*/private String placeOfResidence;/*** 通讯地址*/private String postalAddress;/*** 联系手机*/private String contactTheMobilePhone;/*** 个人邮箱*/private String personalMailbox;/*** 紧急联系人*/private String emergencyContact;/*** 紧急联系电话*/private String emergencyContactNumber;/*** 社保电脑号*/private String socialSecurityComputerNumber;/*** 公积金账号*/private String providentFundAccount;/*** 银行卡号*/private String bankCardNumber;/*** 开户行*/private String openingBank;/*** 学历类型*/private String educationalType;/*** 毕业学校*/private String graduateSchool;/*** 入学时间*/private String enrolmentTime;/*** 毕业时间*/private String graduationTime;/*** 专业*/private String major;/*** 毕业证书*/private String graduationCertificate;/*** 学位证书*/private String certificateOfAcademicDegree;/*** 上家公司*/private String homeCompany;/*** 职称*/private String title;/*** 简历*/private String resume;/*** 有无竞业限制*/private String isThereAnyCompetitionRestriction;/*** 前公司离职证明*/private String proofOfDepartureOfFormerCompany;/*** 备注*/private String remarks;/*** 离职时间*/@ExcelAttribute(sort = 12)private String resignationTime;/*** 离职类型*/@ExcelAttribute(sort = 10)private String typeOfTurnover;/*** 申请离职原因*/@ExcelAttribute(sort = 11)private String reasonsForLeaving;}

3.准备数据

public List<EmployeeReportResult> createData() {List<EmployeeReportResult> employeeReportResults = new ArrayList<>();for (int i = 0; i < 100; i++) {EmployeeReportResult employeeReportResult = new EmployeeReportResult();employeeReportResult.setAge("17");employeeReportResult.setArchivingOrganization("1");employeeReportResult.setAreThereAnyMajorMedicalHistories("1");employeeReportResult.setBankCardNumber("1");employeeReportResult.setBirthday("1");employeeReportResult.setBloodType("1");employeeReportResult.setCertificateOfAcademicDegree("1");employeeReportResult.setCompanyId("1");employeeReportResult.setConstellation("1");employeeReportResult.setContactTheMobilePhone("1");employeeReportResult.setDateOfBirth("1");employeeReportResult.setDateOfResidencePermit("1");employeeReportResult.setDepartmentName("1");employeeReportResult.setDoChildrenHaveCommercialInsurance("1");employeeReportResult.setDomicile("1");employeeReportResult.setEmergencyContact("1");employeeReportResult.setEducationalType("1");employeeReportResult.setEmergencyContactNumber("1");employeeReportResult.setEnglishName("1");employeeReportResult.setEnrolmentTime("1");employeeReportResult.setGraduateSchool("1");employeeReportResult.setGraduationCertificate("1");employeeReportResult.setGraduationTime("1");employeeReportResult.setHomeCompany("1");employeeReportResult.setIdCardPhotoBack("1");employeeReportResult.setIdCardPhotoPositive("1");employeeReportResult.setIdNumber("1");employeeReportResult.setIsThereAnyCompetitionRestriction("1");employeeReportResult.setIsThereAnyViolationOfLawOrDiscipline("1");employeeReportResult.setMajor("1");employeeReportResult.setMaritalStatus("1");employeeReportResult.setMobile("1");employeeReportResult.setMobile("1");employeeReportResult.setNation("1");employeeReportResult.setNationalArea("1");employeeReportResult.setNativePlace("1");employeeReportResult.setOpeningBank("1");employeeReportResult.setPassportNo("1");employeeReportResult.setPersonalMailbox("1");employeeReportResult.setPlaceOfResidence("1");employeeReportResult.setPoliticalOutlook("1");employeeReportResult.setPostalAddress("1");employeeReportResult.setProofOfDepartureOfFormerCompany("1");employeeReportResult.setProvidentFundAccount("1");employeeReportResult.setQq("1");employeeReportResult.setReasonsForLeaving("1");employeeReportResult.setRemarks("1");employeeReportResult.setResidenceCardCity("1");employeeReportResult.setReasonsForLeaving("1");employeeReportResult.setResidencePermitDeadline("1");employeeReportResult.setResignationTime("1");employeeReportResult.setResume("1");employeeReportResult.setSex("1");employeeReportResult.setSocialSecurityComputerNumber("1");employeeReportResult.setStaffPhoto("1");employeeReportResult.setStateOfChildren("1");employeeReportResult.setTheHighestDegreeOfEducation("1");employeeReportResult.setTimeOfEntry("1");employeeReportResult.setTimeToJoinTheParty("1");employeeReportResult.setTitle("1");employeeReportResult.setTypeOfTurnover("1");employeeReportResult.setUserId("1");employeeReportResult.setUsername("1");employeeReportResult.setWechat("1");employeeReportResult.setZodiac("1");employeeReportResults.add(employeeReportResult);}return employeeReportResults;
}

4.模板导出

@GetMapping("/template")
public void templateExport(HttpServletResponse response) throws IOException {//2.加载模板流数据//Resource resource = new ClassPathResource("xslx/header-demo.xlsx");//FileInputStream fis = new FileInputStream(resource.getFile());FileInputStream fis = new FileInputStream(new File("C:\\Users\\lenovo\\Desktop\\header-demo.xlsx"));//3.根据文件流,加载指定的工作簿XSSFWorkbook wb = new XSSFWorkbook(fis);//4.读取工作表Sheet sheet = wb.getSheetAt(0);//5.抽取公共的样式Row styleRow = sheet.getRow(2);CellStyle[] styles = new CellStyle[styleRow.getLastCellNum()];for (int i = 0; i < styleRow.getLastCellNum(); i++) {styles[i] = styleRow.getCell(i).getCellStyle();}List<EmployeeReportResult> list = createData();//6.构造每行和单元格数据AtomicInteger datasAi = new AtomicInteger(2);Cell cell = null;for (EmployeeReportResult report : list) {Row dataRow = sheet.createRow(datasAi.getAndIncrement());//编号cell = dataRow.createCell(0);cell.setCellValue(report.getUserId());cell.setCellStyle(styles[0]);//姓名cell = dataRow.createCell(1);cell.setCellValue(report.getUsername());cell.setCellStyle(styles[1]);//手机cell = dataRow.createCell(2);cell.setCellValue(report.getMobile());cell.setCellStyle(styles[2]);//最高学历cell = dataRow.createCell(3);cell.setCellValue(report.getTheHighestDegreeOfEducation());cell.setCellStyle(styles[3]);//国家地区cell = dataRow.createCell(4);cell.setCellValue(report.getNationalArea());cell.setCellStyle(styles[4]);//护照号cell = dataRow.createCell(5);cell.setCellValue(report.getPassportNo());cell.setCellStyle(styles[5]);//籍贯cell = dataRow.createCell(6);cell.setCellValue(report.getNativePlace());cell.setCellStyle(styles[6]);//生日cell = dataRow.createCell(7);cell.setCellValue(report.getBirthday());cell.setCellStyle(styles[7]);//属相cell = dataRow.createCell(8);cell.setCellValue(report.getZodiac());cell.setCellStyle(styles[8]);//入职时间cell = dataRow.createCell(9);cell.setCellValue(report.getTimeOfEntry());cell.setCellStyle(styles[9]);//离职类型cell = dataRow.createCell(10);cell.setCellValue(report.getTypeOfTurnover());cell.setCellStyle(styles[10]);//离职原因cell = dataRow.createCell(11);cell.setCellValue(report.getReasonsForLeaving());cell.setCellStyle(styles[11]);//离职时间cell = dataRow.createCell(12);cell.setCellStyle(styles[12]);cell.setCellValue(report.getResignationTime());}String fileName = URLEncoder.encode("人员信息.xlsx", "UTF-8");response.setContentType("application/octet-stream");response.setHeader("content-disposition", "attachment;filename=" + newString(fileName.getBytes("ISO8859-1")));response.setHeader("filename", fileName);wb.write(response.getOutputStream());
}

【POI】 模板导出 四相关推荐

  1. Poi模板导出(设置字体样式)

    一.controller查询数据,并调用此方法 /*** 试题模板导出* @author zhengzx* @datetime 2021-11-17 11:48:59* @param response ...

  2. java利用poi模板导出word文件

    注意:  doc文件的读取,需要导入poi-scratchpad包: docx文件读取,需要导入poi-ooxml包: 一.引入pom <dependency><groupId> ...

  3. java poi 模板 导出_java poi 从服务器下载模板写入数据再导出

    最近写了一个,Excel 的 写入和导出.   需求是这样的.   在新建合同的时候,会有导出合同的数据,    导出的模板是固定的,,需要在模板里面写入合同的信息. first   :  下载模板 ...

  4. (Java)word转pdf(aspose),pdf加水印(itextpdf),并支持POI模板(包括checkbox)导出

    目录 1.引入jar包 2.pdf处理工具类 3.poi模板导出工具类 4.测试类 5.模板 6.最终效果 1.引入jar包 2.pdf处理工具类 import com.aspose.cells.Pd ...

  5. POI根据模板导出word文件,以及word转PDF,PDF转图片再插入PDF中(防止PDF被修改)

    POI操作word和PDF POI根据模板导出word文件 word转PDF PDF转图片再插入PDF中(防止PDF被修改) POI根据模板导出word文件 一.制作word模版,${xxxx}是一会 ...

  6. springboot+poi开发excel导出 加载Excel模板导出 Excel批量导出详解

    提到Excel导出功能,可能很多人都使用springmvc框架做过,笔者今天要给大家分享的是基于springBoot开发Excel复杂模板导出功能(所谓复杂模板指在模板里的特定表头里有不同的单元格合并 ...

  7. POI之excel固定模板导出

    POI之excel固定模板导出 一.简介 二.excel模板 三.项目中maven依赖 四.Excel模板操作代码 五.Controller层excel模板导出接口代码 六.导出excel 一.简介 ...

  8. java poi导出excel模板_POI通过模板导出EXCEL文件的实例

    一般的EXCEL导出使用POI先创建一个HSSFWorkbook,然后通过不断创建HSSFRow,HSSFCell后设置单元格内容便可以完成导出. 这次在项目中需要用到模板,导出的内容包括(1.模板中 ...

  9. java使用poi实现导出表格模板

    产品经理新需求!要求导出类似检查记录的模板表格下面是已经做好的表格 下面讲一讲如何实现 1,依赖导入 <!-- excel工具 --><dependency><group ...

  10. 【Apache POI】Java Web根据模板导出word文件

    最近工作中遇到一个需求:根据word模板文档导出word文件. 查阅了一些资料,发现Apache POI可以实现文档读写的功能,于是就研究了一下,总结如下: Apache-POI在线Javadoc:h ...

最新文章

  1. 生成树计数Matrix-Tree定理-数学
  2. 11matlab [A rank]=sort (B), P = p(rank,: )的问题 and ~符号运算
  3. 微软中国CTO:不思进取、放弃基本技能的程序员在34.9岁会被淘汰!
  4. M2Eclipse:Maven Eclipse插件无法搜索远程库的解决方法
  5. 程序员幽默:工作群里常见表情的真正含义……
  6. play框架入门操作
  7. Hibernate学习笔记--导航
  8. 批次程序安裝手冊寫法
  9. react-redux
  10. Bosh vs Comet vs Long Polling vs Polling
  11. baacloud无法连接到_加入 Beta 版“Baacloud88” - TestFlight - Apple
  12. 《最优化理论》:运输问题(一)求最小运费【西北角法、最小元素法、伏格尔法】
  13. imagenet2012 label
  14. java多个文件压缩成zip文件
  15. 用nohup命令让Linux下程序永远在后台执行--zz牧云IT生活
  16. 几款好用证件照制作工具推荐
  17. idea中文件被Mark as Plain Text后恢复
  18. 路由算法之——ECMP算法
  19. Games101 笔记 Lecture 7-9 Shading (Illumination, Shading)
  20. Rogue Signs: Deceiving Traffic Sign Recognition with Malicious Ads and Logos

热门文章

  1. springboot学生在线考试管理系统
  2. fruit loops studio音乐宿主软件daw水果软件20.9中文版
  3. 中国能源统计年鉴面板数据-分省市主要污染物排放指标(包含ECXEL2020年中国统计年鉴)
  4. fluent设置uds c语言程序,Fluent中UDF和UDS二次开发高级实例专题
  5. Process Simulate
  6. 刷魔趣系统与安装google相机
  7. 怎么在苹果手机计算机上打字,iPhone苹果手机在打字时如何进行换行
  8. 【算法设计与分析】专栏目录
  9. netbackup备份mysql_NBU网络备份大全之数据库备份与恢复
  10. IntelliJ IDEA Maven安装配置