使用POI实现通用Excel导出方法

1 下载量 25 浏览量 更新于2024-09-01 收藏 110KB PDF 举报
"公共POI导出Excel方法详解" 在Java开发中,经常需要处理数据的导出功能,其中Excel是最常见的导出格式之一。Apache POI是一个强大的库,用于读写Microsoft Office格式的文件,包括Excel。本篇将详细介绍如何使用POI库创建一个公共的Excel导出方法,以便在不同的项目或场景中复用代码,提高开发效率。 首先,我们需要了解Apache POI的基本概念。POI提供了一系列的API,如HSSFWorkbook、HSSFSheet、HSSFRow和HSSFCell等,用于操作Excel文件。HSSFWorkbook代表整个工作簿,HSSFSheet代表工作簿中的一个工作表,HSSFRow代表工作表中的一行,而HSSFCell则表示单元格。通过这些对象,我们可以创建、修改和读取Excel文件的内容。 为了实现公共的POI导出Excel方法,我们可以创建一个名为`ExportExcel`的类,并在其中定义一个方法,例如`exportExcel()`. 这个方法应该接受一些参数,如数据列表、列标题和样式设置等。在`exportExcel()`方法内部,我们首先创建一个`HSSFWorkbook`实例,然后创建对应的`HSSFSheet`,接着根据数据列表创建多行`HSSFRow`,并在每行中添加`HSSFCell`。对于每个单元格,可以设置相应的值、样式和格式。 在代码示例中,我们可以看到`ExportExcel`类继承了`ActionSupport`,并实现了`ServletRequestAware`接口,这可能表明该类是在Struts框架中使用的。`ServletResponseAware`接口允许我们获取到HttpServletResponse对象,这对于发送HTTP响应,即导出Excel文件非常关键。 在导出过程中,我们需要创建一个`OutputStream`,通过HttpServletResponse的`getOutputStream()`方法获取。然后将创建的`HSSFWorkbook`写入到这个流中,并设置合适的响应头,比如`Content-Type`为"application/vnd.ms-excel",以及`Content-Disposition`来指定文件名。最后,关闭输出流以完成导出过程。 以下是一个简化的`exportExcel()`方法示例: ```java public void exportExcel(HttpServletResponse response, List<List<Object>> data, String[] columnTitles) throws IOException { // 创建工作簿 HSSFWorkbook workbook = new HSSFWorkbook(); // 创建工作表 HSSFSheet sheet = workbook.createSheet(title); // 设置表头 HSSFRow headerRow = sheet.createRow(0); for (int i = 0; i < columnTitles.length; i++) { HSSFCell cell = headerRow.createCell(i); cell.setCellValue(new HSSFRichTextString(columnTitles[i])); } // 添加数据 int rowIndex = 1; for (List<Object> rowData : data) { HSSFRow dataRow = sheet.createRow(rowIndex++); for (int j = 0; j < rowData.size(); j++) { HSSFCell cell = dataRow.createCell(j); cell.setCellValue(rowData.get(j).toString()); } } // 设置样式,如字体、颜色等 HSSFFont font = workbook.createFont(); font.setColor(HSSFColor.BLACK.index); HSSFCellStyle style = workbook.createCellStyle(); style.setFont(font); // 将工作簿写入输出流 OutputStream outputStream = response.getOutputStream(); response.setContentType("application/vnd.ms-excel"); response.setHeader("Content-Disposition", "attachment; filename=" + title + ".xls"); workbook.write(outputStream); outputStream.close(); workbook.close(); } ``` 这段代码创建了一个Excel工作簿,添加了一个工作表,设置了表头,填充了数据,并为数据设置了基本的样式。当然,实际的代码可能会更复杂,包括错误处理、自定义样式和复杂的格式化逻辑。 总结来说,公共POI导出Excel方法的核心是利用Apache POI库创建和操作Excel对象,同时结合Servlet API处理HTTP响应,以实现文件的下载。通过封装这样的公共方法,可以有效地减少重复代码,提高代码的可重用性和维护性。