用 Java 快速将百万级数据导入 Excel ,可使用 Apache POI 库。其中 SXSSF(Streaming Usermodel API)是处理大数据量时的优选,通过限制内存中保留的行数,把超出的行写入磁盘,从而减少内存占用。
依赖引入:要保证项目里包含 Apache POI 的依赖。若使用 Maven,可在 pom.xml
里添加以下依赖:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.3</version>
</dependency>
代码示例:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
public class ExcelImportLargeData {
public static void main(String[] args) {
// 要导入的数据行数
int rowCount = 1000000;
// 创建一个新的 SXSSF 工作簿,设置内存中保留的行数为 100
SXSSFWorkbook workbook = new SXSSFWorkbook(100);
// 创建一个工作表
Sheet sheet = workbook.createSheet("Large Data");
// 创建表头
Row headerRow = sheet.createRow(0);
for (int i = 0; i < 5; i++) {
Cell cell = headerRow.createCell(i);
cell.setCellValue("Column " + (i + 1));
}
// 填充数据
for (int i = 1; i <= rowCount; i++) {
Row row = sheet.createRow(i);
for (int j = 0; j < 5; j++) {
Cell cell = row.createCell(j);
cell.setCellValue("Data " + i + "-" + (j + 1));
}
}
// 保存文件
try (FileOutputStream fileOut = new FileOutputStream("large_data.xlsx")) {
workbook.write(fileOut);
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭工作簿
try {
workbook.close();
// 清理临时文件
workbook.dispose();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}