生成EXCEL文件要导入poi.jar包
在poi.xml中配置依赖,可自动下载
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.9</version> </dependency>
导出EXCEL两种情况:
1,点击导出通过浏览器下载
2,点击导出直接生成文件在本地磁盘
生成Excel的过程是一样的,差别是输出方式,如下:
/* * 通用的Excel文件创建方法 * sheets:sheet的tab标签页说明: 15年度报表 * headers:表头:List存放表头 编号、姓名、备注 * datas:数据行:list存放实体数据,map存放具体每一行数据,和headers对应。 * rs:HttpServletResponse响应作用域,如果不为null,会直接将文件流输出到客户端,下载文件 */ public static void ExpExs(String sheets,List headers,List<Map> datas,HttpServletResponse rs){ try { if(sheets== null || "".equals(sheets)){ sheets = "sheet"; } HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet(sheets); //+workbook.getNumberOfSheets() HSSFRow row; HSSFCell cell; //产生表格标题行 row = sheet.createRow(0); for (int i = 0; i < headers.size(); i++) { HSSFRichTextString text = new HSSFRichTextString(headers.get(i).toString()); cell = row.createCell(i); cell.setCellValue(text); } Map map; //遍历集合数据,产生数据行 for (int i=0; i <datas.size(); i++) { row=sheet.createRow((i+1)); row.setHeightInPoints(20); map = datas.get(i); for(int j=0;j<map.size();j++) { cell = row.createCell(j); cell.setCellType(HSSFCell.CELL_TYPE_STRING); if(map.get(j) != null) { cell.setCellValue(new HSSFRichTextString(map.get(j).toString())); }else{ cell.setCellValue(new HSSFRichTextString("")); } } } for (int i = 0; i < headers.size(); i++) { sheet.autoSizeColumn((short)i); } //浏览器下载 rs.reset(); rs.setContentType("multipart/form-data"); //自动识别 rs.setHeader("Content-Disposition","attachment;filename=data.xls"); //文件流输出到rs里 workbook.write(rs.getOutputStream()); rs.getOutputStream().flush(); rs.getOutputStream().close();
//下载到本地
FileOutputStream fout = new FileOutputStream("D:/exportRoomPvUv.xls");
//文件流输出到rs里
workbook.write(fout);
fout.close();
} catch (Exception e) { System.out.println("#Error ["+e.getMessage()+"] "); } System.out.println("["+sheets+"] 创建成功..."); System.out.println(""); }