【POI】 模板导出 四
生活随笔
收集整理的這篇文章主要介紹了
【POI】 模板导出 四
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
自定義生成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】 模板导出 四的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Javascript 调试技巧
- 下一篇: lecture6-mini批量梯度训练及