很多时候,一个软件应用程序需要生成Microsoft Excel文件格式的报告。有时,一个应用程序甚至希望将Excel文件作为输入数据。例如,一个公司开发的应用程序将财务部门需要所有输出生成自己的Excel。
任何Java程序员愿意将MS Office文件的输出,可以使用预定义和只读API来做到。
什么是Apache POI?
Apache POI是一种流行的API,它允许程序员使用Java程序创建,修改和显示MS Office文件。这由Apache软件基金会开发使用Java分布式设计或修改Microsoft Office文件的开源库。它包含类和方法对用户输入数据或文件到MS Office文档进行解码。
Apache POI组件
Apache POI包含类和方法,来将MS Office所有OLE 2文档复合。此API组件的列表如下。
-
POIFS (较差混淆技术实现文件系统) : 此组件是所有其他POI元件的基本因素。它被用来明确地读取不同的文件。
-
HSSF (可怕的电子表格格式) : 它被用来读取和写入MS-Excel文件的xls格式。
-
XSSF (XML格式) : 它是用于MS-Excel中XLSX文件格式。
-
HPSF (可怕的属性设置格式) : 它用来提取MS-Office文件属性设置。
-
HWPF (可怕的字处理器格式) : 它是用来读取和写入MS-Word的文档扩展名的文件。
-
XWPF (XML字处理器格式) : 它是用来读取和写入MS-Word的docx扩展名的文件。
-
HSLF (可怕的幻灯片版式格式) : 它是用于读取,创建和编辑PowerPoint演示文稿。
-
HDGF (可怕的图表格式) : 它包含类和方法为MS-Visio的二进制文件。
-
HPBF (可怕的出版商格式) : 它被用来读取和写入MS-Publisher文件。
public HSSFWorkbook generateSheet(HSSFWorkbook wb, String sheetName, List<StaffDeclareInfoDO> list) {/*** 总记录数 **/int listSize = list == null ? 0 : list.size();HSSFSheet sheet = wb.createSheet(sheetName);HSSFCellStyle style = wb.createCellStyle();style.setAlignment(HSSFCellStyle.ALIGN_CENTER);HSSFRow row = sheet.createRow(0);HSSFCell cell = row.createCell((short) 0);cell.setEncoding(HSSFCell.ENCODING_UTF_16);cell.setCellValue("序号");cell = row.createCell((short) 1);cell.setEncoding(HSSFCell.ENCODING_UTF_16);cell.setCellValue("姓名");cell = row.createCell((short) 2);cell.setEncoding(HSSFCell.ENCODING_UTF_16);cell.setCellValue("性别");cell = row.createCell((short) 3);cell.setEncoding(HSSFCell.ENCODING_UTF_16);cell.setCellValue("手机");cell = row.createCell((short) 4);cell.setEncoding(HSSFCell.ENCODING_UTF_16);cell.setCellValue("身份证号");cell = row.createCell((short) 5);for (int i = 0; i < listSize; i++) {row = sheet.createRow(i + 1);StaffDeclareInfoDO data = list.get(i);cell = row.createCell((short) 0);cell.setEncoding(HSSFCell.ENCODING_UTF_16);cell.setCellValue(data.getId());cell = row.createCell((short) 1);cell.setEncoding(HSSFCell.ENCODING_UTF_16);cell.setCellValue(data.getName());cell = row.createCell((short) 2);cell.setEncoding(HSSFCell.ENCODING_UTF_16);cell.setCellValue(data.getSex());cell = row.createCell((short) 3);cell.setEncoding(HSSFCell.ENCODING_UTF_16);cell.setCellValue(data.getMobile());cell = row.createCell((short) 4);cell.setEncoding(HSSFCell.ENCODING_UTF_16);cell.setCellValue(data.getCertificate()); }return wb;}
public void export(HSSFWorkbook wb, HttpServletResponse response) {try {String tip = DateUtil.format(new Date(), DateUtil.shortFormat) + "";String name = "xxx" + tip;response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(name, "utf-8") + ".xls");OutputStream out = response.getOutputStream();ByteArrayOutputStream baos = new ByteArrayOutputStream();wb.write(baos);byte[] xlsBytes = baos.toByteArray();out.write(xlsBytes);out.close();}catch (Exception e) {e.printStackTrace();}}