Java实现Excel导出详解及示例代码

6 下载量 37 浏览量 更新于2024-09-01 收藏 74KB PDF 举报
"Java编程实现Excel导出的通用方法及示例代码" 在Java开发中,将数据导出为Excel格式是一种常见的需求,这通常用于数据报表或数据分析。本示例将详细介绍如何在Java中创建一个通用的Excel导出方法。通过引入Apache POI库,我们可以方便地操作Excel文件。 首先,确保在项目中引入了Apache POI的jar包,它提供了处理Microsoft Office格式(包括Excel)的API。Apache POI库允许我们在Java程序中创建、修改和读取Excel文件。 以下是一个简单的Java代码示例,展示了如何导出数据到Excel: ```java package lcy._41_50; import java.io.FileOutputStream; import java.io.OutputStream; import java.net.URLEncoder; import javax.servlet.http.HttpServletResponse; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFFont; 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.hssf.util.CellRangeAddress; import org.apache.poi.hssf.util.HSSFColor; @SuppressWarnings({"deprecation"}) public class Test46 { public static void main(String[] args) throws Exception { String sheetName = "用车统计表单"; String titleName = "用车申请数据统计表"; String fileName = "用车申请统计表单"; int columnNumber = 3; int[] columnWidth = {10, 20, 30}; String[][] dataList = { {"001", "2015-01-01", "IT"}, {"002", "2015-01-02", "市场部"}, {"003", "2015-01-03", "销售部"} }; // 创建Excel工作簿 HSSFWorkbook workbook = new HSSFWorkbook(); // 创建工作表 HSSFSheet sheet = workbook.createSheet(sheetName); // 设置标题行 HSSFRow titleRow = sheet.createRow(0); for (int i = 0; i < columnNumber; i++) { HSSFCell cell = titleRow.createCell(i); cell.setCellValue(titleName.split(",")[i]); cell.setCellStyle(createTitleCellStyle(workbook)); } // 设置列宽 for (int i = 0; i < columnNumber; i++) { sheet.setColumnWidth(i, columnWidth[i] * 256); } // 添加数据行 int rowNum = 1; for (String[] data : dataList) { HSSFRow dataRow = sheet.createRow(rowNum++); for (int i = 0; i < data.length; i++) { HSSFCell cell = dataRow.createCell(i); cell.setCellValue(data[i]); } } // 写入文件 OutputStream out = new FileOutputStream(fileName + ".xls"); workbook.write(out); out.close(); // 或者,如果要在Web环境下导出Excel,可以使用以下代码发送到浏览器 HttpServletResponse response = ...; // 获取HttpServletResponse对象 response.setContentType("application/vnd.ms-excel"); response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName + ".xls", "UTF-8")); OutputStream responseOut = response.getOutputStream(); workbook.write(responseOut); responseOut.flush(); responseOut.close(); } private static HSSFCellStyle createTitleCellStyle(HSSFWorkbook workbook) { HSSFFont titleFont = workbook.createFont(); titleFont.setFontHeightInPoints((short) 14); titleFont.setBold(true); titleFont.setColor(HSSFColor.WHITE.index); HSSFCellStyle style = workbook.createCellStyle(); style.setFillForegroundColor(HSSFColor.BLUE.index); style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); style.setBorderBottom(HSSFCellStyle.BORDER_THIN); style.setBorderLeft(HSSFCellStyle.BORDER_THIN); style.setBorderRight(HSSFCellStyle.BORDER_THIN); style.setBorderTop(HSSFCellStyle.BORDER_THIN); style.setAlignment(HSSFCellStyle.ALIGN_CENTER); style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); style.setFont(titleFont); return style; } } ``` 这段代码首先创建了一个`HSSFWorkbook`对象,它是Excel工作簿的表示。接着创建了一个名为`sheetName`的工作表,并设置了标题行和列宽。数据被添加到工作表中,每行数据对应Excel中的一个`HSSFRow`对象,每列数据对应一个`HSSFCell`对象。此外,代码还定义了一个样式方法`createTitleCellStyle`,用于设置标题行的样式,包括字体大小、颜色、背景色和边框。 如果是在Web环境中,可以通过`HttpServletResponse`对象将生成的Excel文件作为附件发送给用户下载。在上述代码中,设置了响应头以指示这是一个Excel文件,并将文件名编码为UTF-8格式,以便在浏览器中正确显示。 以上就是一个基本的Java导出Excel的通用方法。这个例子展示了如何创建Excel文件、设置标题、调整列宽、填充数据以及设置样式。在实际项目中,可以根据需要扩展此方法,例如添加数据格式化、合并单元格等功能。同时,由于Apache POI的API支持更多的Excel功能,如公式计算、图表创建等,开发者可以根据需求进一步探索和利用这些功能。