1.POI概述
POI简单的来说就是用来操作报表的工具。
一般用于对数据的导入导出操作
上传数据(导入):把报表中的数据导入到数据库中
生成报表(导出):把数据库中的数据,导出并写入到报表(work,excel, pdf )存储数据
2.POI的结构说明
HSSF提供读写Microsoft Excel XLS格式档案的功能。
XSSF提供读写Microsoft Excel OOXML XLSX格式档案的功能。
HWPF提供读写Microsoft Word DOC格式档案的功能。
HSLF提供读写Microsoft PowerPoint格式档案的功能。
HDGF提供读Microsoft Visio格式档案的功能。
3.结合ssm框架实现对Excel报表操作的两种方式
1.普通导出代码案例
1.用maven项目 先导入相关需要的jar包
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.9</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.9</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml-schemas</artifactId> <version>3.9</version> </dependency>
2.后台controller层代码
@RequestMapping(value="ex",method=RequestMethod.POST) public void cc(Stutb stutb,HttpServletRequest request,HttpServletResponse response,String offset,String limit) throws Exception{ //创建工作蒲 XSSFWorkbook workbook = new XSSFWorkbook(); //通过工作蒲创建表单,并设置表单名称 XSSFSheet sheet = workbook.createSheet("c"); //创建第一行 报表的第一行的下标索引是从0开始 XSSFRow row = sheet.createRow(0); //定义一个string数组 里面放的是标题 String[] a={"编号","姓名","性别","出生日期"}; //用循环设置单元格 for (int i = 0; i < a.length; i++) { XSSFCell cell = row.createCell(i); //循环设置单元格里的值 cell.setCellValue(a[i]); } //从数据库拿到所有数据 List<Stutb> stutb1 = stutbService.findStutb(new Stutb()); for (int i = 0; i < stutb1.size(); i++) { //循环提取每一个对象 Stutb stutb2=stutb1.get(i); //因为我们刚才已经设置了第一行 根据对应的数据设置第二行 XSSFRow row1 = sheet.createRow(i + 1); //循环设置每个单元格的信息 row1.createCell(0).setCellValue(stutb2.getmId()); row1.createCell(0).setCellValue(stutb2.getsName()); row1.createCell(0).setCellValue(stutb2.getsSex()); //把时间类型转换称字符串 row1.createCell(0).setCellValue(stutb2.getsBirth()); } //下载称excel文档 response.setHeader("Content-Disposition", "attachment;filename="+ URLEncoder.encode("员工列表.xlsx", "UTF-8")); response.setHeader("Connection", "close"); response.setHeader("Content-Type", "application/octet-stream"); workbook.write(response.getOutputStream()); }