Java中怎么写入Excel文件
在Java开发中,操作Excel文件是一项常见需求,尤其是在数据导出、报表生成等场景,Apache POI和JXL是Java操作Excel的两大主流库,其中Apache POI功能更全面,支持.xls(Excel 2003)和.xlsx(Excel 2007+)格式,而JXL仅支持.xls格式,本文将详细介绍如何使用Apache POI库实现Excel文件的写入操作,包括基础用法、样式设置、大数据量处理等关键内容。

环境准备与依赖引入
在使用Apache POI之前,需在项目中添加相关依赖,以Maven为例,在pom.xml中引入以下依赖:
<dependencies>
<!-- POI核心依赖 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.2.3</version>
</dependency>
<!-- 支持.xlsx格式 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.3</version>
</dependency>
</dependencies>
若使用Gradle,可通过implementation 'org.apache.poi:poi:5.2.3'和implementation 'org.apache.poi:poi-ooxml:5.2.3'引入。
基础写入操作:创建Excel并填充数据
创建工作簿与工作表
Apache POI通过Workbook接口表示Excel工作簿,HSSFWorkbook对应.xls格式,XSSFWorkbook对应.xlsx格式,以下是创建工作簿和工作表的代码示例:

import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import java.io.FileOutputStream;
public class ExcelWriteExample {
public static void main(String[] args) throws Exception {
// 创建XSSFWorkbook对象(.xlsx格式)
Workbook workbook = new XSSFWorkbook();
// 创建工作表,名为"Sheet1"
Sheet sheet = workbook.createSheet("Sheet1");
// 其他操作...
// 写入文件并关闭资源
try (FileOutputStream fos = new FileOutputStream("output.xlsx")) {
workbook.write(fos);
}
workbook.close();
}
}
写入单元格数据
通过Row和Cell对象操作Excel的行和单元格,以下为向指定单元格写入数据的示例:
// 创建第1行(索引从0开始)
Row row = sheet.createRow(0);
// 在第1行第1列创建单元格并写入字符串
Cell cell1 = row.createCell(0);
cell1.setCellValue("姓名");
// 在第1行第2列写入数字
Cell cell2 = row.createCell(1);
cell2.setCellValue(25);
// 写入日期(需设置单元格格式)
CreationHelper createHelper = workbook.getCreationHelper();
Cell cell3 = row.createCell(2);
cell3.setCellValue(createHelper.createCreationDate());
样式设置:美化Excel内容
设置单元格样式
通过CellStyle可调整字体、颜色、边框等样式,例如设置字体加粗和背景色:
// 创建字体样式 Font font = workbook.createFont(); font.setBold(true); font.setFontHeightInPoints((short) 14); // 创建单元格样式并应用字体 CellStyle style = workbook.createCellStyle(); style.setFont(font); style.setFillForegroundColor(IndexedColors.YELLOW.getIndex()); style.setFillPattern(FillPatternType.SOLID_FOREGROUND); // 将样式应用到单元格 cell1.setCellStyle(style);
设置列宽与自动换行
// 设置第1列宽度(字符数) sheet.setColumnWidth(0, 5000); // 设置单元格自动换行 CellStyle wrapStyle = workbook.createCellStyle(); wrapStyle.setWrapText(true); cell2.setCellStyle(wrapStyle);
大数据量处理:优化内存使用
当处理大量数据时(如10万行以上),直接使用XSSFWorkbook可能导致内存溢出,此时可采用SXSSFWorkbook(流式API)进行优化:

import org.apache.poi.xssf.streaming.SXSSFWorkbook;
// 创建SXSSFWorkbook,参数为内存中保留的行数(超过部分写入临时文件)
Workbook workbook = new SXSSFWorkbook(100);
Sheet sheet = workbook.createSheet("BigDataSheet");
// 写入数据(循环中创建行和单元格)
for (int i = 0; i < 100000; i++) {
Row row = sheet.createRow(i);
row.createCell(0).setCellValue("Row " + i);
}
// 写入文件并清理临时文件
try (FileOutputStream fos = new FileOutputStream("big_data.xlsx")) {
workbook.write(fos);
}
((SXSSFWorkbook) workbook).dispose(); // 删除临时文件
异常处理与资源关闭
操作Excel文件时需注意异常处理和资源释放,建议使用try-with-resources语句:
try (Workbook workbook = new XSSFWorkbook();
FileOutputStream fos = new FileOutputStream("output.xlsx")) {
// 写入数据逻辑
workbook.write(fos);
} catch (IOException e) {
e.printStackTrace();
}
Java中写入Excel文件的核心步骤包括:创建工作簿/工作表、填充单元格数据、设置样式、处理大数据量,Apache POI提供了丰富的API支持,通过合理选择HSSFWorkbook、XSSFWorkbook或SXSSFWorkbook,可满足不同场景的需求,实际开发中,还需结合业务需求调整格式、样式,并注意内存管理和异常处理,以确保程序稳定性和性能。



















