POIUtil
package com.util.poi; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.poi.hpsf.DocumentSummaryInformation; import org.apache.poi.hpsf.SummaryInformation; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFDataFormat; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.ss.usermodel.FillPatternType; import org.apache.poi.ss.usermodel.IndexedColors; import org.sang.bean.Department; import org.sang.bean.Employee; import org.sang.bean.JobLevel; import org.sang.bean.Nation; import org.sang.bean.PoliticsStatus; import org.sang.bean.Position; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.multipart.MultipartFile; /** * POI工具类 */ public class PoiUtils { public static ResponseEntity<byte[]> exportEmp2Excel(List<Employee> emps) { HttpHeaders headers = null; ByteArrayOutputStream baos = null; try { //1.创建Excel文档 HSSFWorkbook workbook = new HSSFWorkbook(); //2.创建文档摘要 workbook.createInformationProperties(); //3.获取文档信息,并配置 DocumentSummaryInformation dsi = workbook.getDocumentSummaryInformation(); //3.1文档类别 dsi.setCategory("员工信息"); //3.2设置文档管理员 dsi.setManager("江南一点雨"); //3.3设置组织机构 dsi.setCompany("XXX集团"); //4.获取摘要信息并配置 SummaryInformation si = workbook.getSummaryInformation(); //4.1设置文档主题 si.setSubject("员工信息表"); //4.2.设置文档标题 si.setTitle("员工信息"); //4.3 设置文档作者 si.setAuthor("XXX集团"); //4.4设置文档备注 si.setComments("备注信息暂无"); //创建Excel表单 HSSFSheet sheet = workbook.createSheet("XXX集团员工信息表"); //创建日期显示格式 HSSFCellStyle dateCellStyle = workbook.createCellStyle(); dateCellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy")); //创建标题的显示样式 HSSFCellStyle headerStyle = workbook.createCellStyle(); headerStyle.setFillForegroundColor(IndexedColors.YELLOW.index); headerStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); //定义列的宽度 sheet.setColumnWidth(0, 5 * 256); sheet.setColumnWidth(1, 12 * 256); sheet.setColumnWidth(2, 10 * 256); sheet.setColumnWidth(3, 5 * 256); sheet.setColumnWidth(4, 12 * 256); sheet.setColumnWidth(5, 20 * 256); sheet.setColumnWidth(6, 10 * 256); sheet.setColumnWidth(7, 10 * 256); sheet.setColumnWidth(8, 16 * 256); sheet.setColumnWidth(9, 12 * 256); sheet.setColumnWidth(10, 15 * 256); sheet.setColumnWidth(11, 20 * 256); sheet.setColumnWidth(12, 16 * 256); sheet.setColumnWidth(13, 14 * 256); sheet.setColumnWidth(14, 14 * 256); sheet.setColumnWidth(15, 12 * 256); sheet.setColumnWidth(16, 8 * 256); sheet.setColumnWidth(17, 16 * 256); sheet.setColumnWidth(18, 20 * 256); sheet.setColumnWidth(19, 12 * 256); sheet.setColumnWidth(20, 8 * 256); sheet.setColumnWidth(21, 25 * 256); sheet.setColumnWidth(22, 14 * 256); sheet.setColumnWidth(23, 12 * 256); sheet.setColumnWidth(24, 12 * 256); //5.设置表头 HSSFRow headerRow = sheet.createRow(0); HSSFCell cell0 = headerRow.createCell(0); cell0.setCellValue("编号"); cell0.setCellStyle(headerStyle); HSSFCell cell1 = headerRow.createCell(1); cell1.setCellValue("姓名"); cell1.setCellStyle(headerStyle); HSSFCell cell2 = headerRow.createCell(2); cell2.setCellValue("工号"); cell2.setCellStyle(headerStyle); HSSFCell cell3 = headerRow.createCell(3); cell3.setCellValue("性别"); cell3.setCellStyle(headerStyle); HSSFCell cell4 = headerRow.createCell(4); cell4.setCellValue("出生日期"); cell4.setCellStyle(headerStyle); HSSFCell cell5 = headerRow.createCell(5); cell5.setCellValue("身份证号码"); cell5.setCellStyle(headerStyle); HSSFCell cell6 = headerRow.createCell(6); cell6.setCellValue("婚姻状况"); cell6.setCellStyle(headerStyle); HSSFCell cell7 = headerRow.createCell(7); cell7.setCellValue("民族"); cell7.setCellStyle(headerStyle); HSSFCell cell8 = headerRow.createCell(8); cell8.setCellValue("籍贯"); cell8.setCellStyle(headerStyle); HSSFCell cell9 = headerRow.createCell(9); cell9.setCellValue("政治面貌"); cell9.setCellStyle(headerStyle); HSSFCell cell10 = headerRow.createCell(10); cell10.setCellValue("电话号码"); cell10.setCellStyle(headerStyle); HSSFCell cell11 = headerRow.createCell(11); cell11.setCellValue("联系地址"); cell11.setCellStyle(headerStyle); HSSFCell cell12 = headerRow.createCell(12); cell12.setCellValue("所属部门"); cell12.setCellStyle(headerStyle); HSSFCell cell13 = headerRow.createCell(13); cell13.setCellValue("职称"); cell13.setCellStyle(headerStyle); HSSFCell cell14 = headerRow.createCell(14); cell14.setCellValue("职位"); cell14.setCellStyle(headerStyle); HSSFCell cell15 = headerRow.createCell(15); cell15.setCellValue("聘用形式"); cell15.setCellStyle(headerStyle); HSSFCell cell16 = headerRow.createCell(16); cell16.setCellValue("最高学历"); cell16.setCellStyle(headerStyle); HSSFCell cell17 = headerRow.createCell(17); cell17.setCellValue("专业"); cell17.setCellStyle(headerStyle); HSSFCell cell18 = headerRow.createCell(18); cell18.setCellValue("毕业院校"); cell18.setCellStyle(headerStyle); HSSFCell cell19 = headerRow.createCell(19); cell19.setCellValue("入职日期"); cell19.setCellStyle(headerStyle); HSSFCell cell20 = headerRow.createCell(20); cell20.setCellValue("在职状态"); cell20.setCellStyle(headerStyle); HSSFCell cell21 = headerRow.createCell(21); cell21.setCellValue("邮箱"); cell21.setCellStyle(headerStyle); HSSFCell cell22 = headerRow.createCell(22); cell22.setCellValue("合同期限(年)"); cell22.setCellStyle(headerStyle); HSSFCell cell23 = headerRow.createCell(23); cell23.setCellValue("合同起始日期"); cell23.setCellStyle(headerStyle); HSSFCell cell24 = headerRow.createCell(24); cell24.setCellValue("合同终止日期"); cell24.setCellStyle(headerStyle); //6.装数据 for (int i = 0; i < emps.size(); i++) { HSSFRow row = sheet.createRow(i + 1); Employee emp = emps.get(i); row.createCell(0).setCellValue(emp.getId()); row.createCell(1).setCellValue(emp.getName()); row.createCell(2).setCellValue(emp.getWorkID()); row.createCell(3).setCellValue(emp.getGender()); HSSFCell birthdayCell = row.createCell(4); birthdayCell.setCellValue(emp.getBirthday()); birthdayCell.setCellStyle(dateCellStyle); row.createCell(5).setCellValue(emp.getIdCard()); row.createCell(6).setCellValue(emp.getWedlock()); row.createCell(7).setCellValue(emp.getNation().getName()); row.createCell(8).setCellValue(emp.getNativePlace()); row.createCell(9).setCellValue(emp.getPoliticsStatus().getName()); row.createCell(10).setCellValue(emp.getPhone()); row.createCell(11).setCellValue(emp.getAddress()); row.createCell(12).setCellValue(emp.getDepartment().getName()); row.createCell(13).setCellValue(emp.getJobLevel().getName()); row.createCell(14).setCellValue(emp.getPosition().getName()); row.createCell(15).setCellValue(emp.getEngageForm()); row.createCell(16).setCellValue(emp.getTiptopDegree()); row.createCell(17).setCellValue(emp.getSpecialty()); row.createCell(18).setCellValue(emp.getSchool()); HSSFCell beginDateCell = row.createCell(19); beginDateCell.setCellValue(emp.getBeginDate()); beginDateCell.setCellStyle(dateCellStyle); row.createCell(20).setCellValue(emp.getWorkState()); row.createCell(21).setCellValue(emp.getEmail()); row.createCell(22).setCellValue(emp.getContractTerm()); HSSFCell beginContractCell = row.createCell(23); beginContractCell.setCellValue(emp.getBeginContract()); beginContractCell.setCellStyle(dateCellStyle); HSSFCell endContractCell = row.createCell(24); endContractCell.setCellValue(emp.getEndContract()); endContractCell.setCellStyle(dateCellStyle); } headers = new HttpHeaders(); headers.setContentDispositionFormData("attachment", new String("员工表.xls".getBytes("UTF-8"), "iso-8859-1")); headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); baos = new ByteArrayOutputStream(); workbook.write(baos); } catch (IOException e) { e.printStackTrace(); } return new ResponseEntity<byte[]>(baos.toByteArray(), headers, HttpStatus.CREATED); } public static List<Employee> importEmp2List(MultipartFile file, List<Nation> allNations, List<PoliticsStatus> allPolitics, List<Department> allDeps, List<Position> allPos, List<JobLevel> allJobLevels) { List<Employee> emps = new ArrayList<>(); try { HSSFWorkbook workbook = new HSSFWorkbook(new POIFSFileSystem(file.getInputStream())); int numberOfSheets = workbook.getNumberOfSheets(); for (int i = 0; i < numberOfSheets; i++) { HSSFSheet sheet = workbook.getSheetAt(i); int physicalNumberOfRows = sheet.getPhysicalNumberOfRows(); Employee employee; for (int j = 0; j < physicalNumberOfRows; j++) { if (j == 0) { continue;//标题行 } HSSFRow row = sheet.getRow(j); if (row == null) { continue;//没数据 } int physicalNumberOfCells = row.getPhysicalNumberOfCells(); employee = new Employee(); for (int k = 0; k < physicalNumberOfCells; k++) { HSSFCell cell = row.getCell(k); switch (cell.getCellTypeEnum()) { case STRING: { String cellValue = cell.getStringCellValue(); if (cellValue == null) { cellValue = ""; } switch (k) { case 1: employee.setName(cellValue); break; case 2: employee.setWorkID(cellValue); break; case 3: employee.setGender(cellValue); break; case 5: employee.setIdCard(cellValue); break; case 6: employee.setWedlock(cellValue); break; case 7: int nationIndex = allNations.indexOf(new Nation(cellValue)); employee.setNationId(allNations.get(nationIndex).getId()); break; case 8: employee.setNativePlace(cellValue); break; case 9: int psIndex = allPolitics.indexOf(new PoliticsStatus(cellValue)); employee.setPoliticId(allPolitics.get(psIndex).getId()); break; case 10: employee.setPhone(cellValue); break; case 11: employee.setAddress(cellValue); break; case 12: int depIndex = allDeps.indexOf(new Department(cellValue)); employee.setDepartmentId(allDeps.get(depIndex).getId()); break; case 13: int jlIndex = allJobLevels.indexOf(new JobLevel(cellValue)); employee.setJobLevelId(allJobLevels.get(jlIndex).getId()); break; case 14: int posIndex = allPos.indexOf(new Position(cellValue)); employee.setPosId(allPos.get(posIndex).getId()); break; case 15: employee.setEngageForm(cellValue); break; case 16: employee.setTiptopDegree(cellValue); break; case 17: employee.setSpecialty(cellValue); break; case 18: employee.setSchool(cellValue); break; case 19: case 20: employee.setWorkState(cellValue); break; case 21: employee.setEmail(cellValue); break; } } break; default: { switch (k) { case 4: employee.setBirthday(cell.getDateCellValue()); break; case 19: employee.setBeginDate(cell.getDateCellValue()); break; case 22: employee.setContractTerm(cell.getNumericCellValue()); break; case 23: employee.setBeginContract(cell.getDateCellValue()); break; case 24: employee.setEndContract(cell.getDateCellValue()); break; } } break; } } emps.add(employee); } } } catch (IOException e) { e.printStackTrace(); } return emps; } }
POIUtil的更多相关文章
- 自己写的POIUtil,主要解决从不同的HSSFWorkbook复制sheet以及根据单元格插入图片等
复制sheet的原始代码网上找的,但是小问题很多,然后自己动手改了一下: 根据单元格信息动态插入图片,如果单元格有文字,图片的位置会在文字之后,如果同样的位置已有图片则会往下插入. import or ...
- Apache POI 工具类 [ PoiUtil ]
pom.xml <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml ...
- excel工具类
excel工具类 import com.iport.framework.util.ValidateUtil; import org.apache.commons.lang3.StringUtils; ...
- 基于jdk1.7实现的excel导出工具类
通用excel导出工具类,基于泛型.反射.hashmap 以及基于泛型.反射.bean两种方式 import java.io.*;import java.lang.reflect.Field;impo ...
- flex+java将数据库里的数据导出到指定目录下excel表里(poi)
数据写入到excel中采用的是Apache POI: //java后台的一个工具类(该工具类适用于为不同字段添加,方便) /* 下面这个方法是将list转换为Excel工作表的 */ public s ...
- 使用POI把Word Excel转为HTML
此方法是针对Office2003的,但是word中如果有图片,图片能够解析出来但是HTML文件中不显示.也不支持excel中的图片解析. 所需jar包如下如下: 1:PoiUtil.java pack ...
- 使用ocupload和POI一键上传Excel并解析导入数据库
使用的工具如下: JQuery ocupload jquery.ocupload-1.1.2.js Apache POI poi-3.9.jar 如果是Maven项目添加依赖如下: <depe ...
- JAVA代码实现嵌套层级列表,POI导出嵌套层级列表
要实现POI导出EXCEL形如 --A1(LV1) ----B1(LV2) ----B2(LV2) ------C1(LV3) ------C2(LV3) ----B3(LV2) --A1(LV1)
- JXLS 2.4.0系列教程(五)——更进一步的应用和页面边距bug修复
注:本文代码建立于前面写的代码.不过不看也不要紧. 前面的文章把JXLS 2.4.0 的基本使用写了一遍,现在讲讲一些更进一步的使用方法.我只写一些我用到过的方法,更多的高级使用方法请参考官网. ht ...
随机推荐
- 017_nginx重定向需求
重定向的各种需求 需求一. 前端同事需要把特定的url进行重定向,实现如下: location / { root /data/base.apiportal_opsweb; index index.ht ...
- 如何用jQuery获得select的值
如何用jQuery获得select的值,在网上找了看了一下,下面将总结一下: 1.获取第一个option的值 $('#test option:first').val(); 2.最后一个o ...
- eclipse:刪除空行
ctrl+F:選擇正則,輸入:^\s*\n ,點擊 replace all.
- C#中Convert.ToInt32、int.TryParse、(int)和int.Parse四者的区别
Convert.ToInt32.(int)和int.Parse三者的区别: 首先:Convert.ToInt32 适合将object类类型转换成int类型,如Convert.ToInt32(sessi ...
- SpringBoot入门小案例
1.创建一个简单的maven project项目 2.下面来看一下项目结构: 3.pom.xml 配置jar包 <parent> <groupId>org.springfram ...
- web----框架基础
Web框架本质: 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. 真实开发中的python web程序来说,一般会分为两部分:服务器 ...
- python 全栈开发,Day38(在python程序中的进程操作,multiprocess.Process模块)
昨日内容回顾 操作系统纸带打孔计算机批处理 —— 磁带 联机 脱机多道操作系统 —— 极大的提高了CPU的利用率 在计算机中 可以有超过一个进程 进程遇到IO的时候 切换给另外的进程使用CPU 数据隔 ...
- 【C++ Primer | 19】运行类型识别
运行类型识别 一.使用RTTI dynamic_cast运算符的调用形式如下所示: dynamic_cast<type*>(e) //e是指针 dynamic_cast<type&a ...
- [HNOI2010]CITY 城市建设
问题: 给一张图,支持边长度修改,求MST 题解: 自己想就想不到了.. 考虑cdq分治 1.首先求出一定有用的边 对于未处理的边,全部设为-INF,求一次MST,出现在MST上的边一定最终出现在后面 ...
- 【AtCoder】ARC081
C - Make a Rectangle 每次取两个相同的且最大的边,取两次即可 #include <bits/stdc++.h> #define fi first #define se ...