上一篇中介绍了POI的内存溢出以及几种Workbook,那么,我们在做文件写入的时候,该如何选择呢?他们的在内存使用上有啥差异呢?
我们接下来分别使用XSSFWorkbook和SXSSFWorkbook来写入一个Excel文件,分别看一下堆内存的使用情况。
package excel.write;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.UUID;
public class XSSFExcelTest {
public static void main(String[] args) throws InterruptedException {
// 创建一个新的工作簿
XSSFWorkbook workbook = new XSSFWorkbook();
// 创建一个新的表格
Sheet sheet = workbook.createSheet("Example Sheet");
for (int i = 0; i < 10000; i++) {
// 创建行(从0开始计数)
Row row = sheet.createRow(i);
for (int j = 0; j < 100; j++) {
// 在行中创建单元格(从0开始计数)
Cell cell = row.createCell(j);
// 设置单元格的值
cell.setCellValue(UUID.randomUUID().toString());
}
}
// 设置文件路径和名称
String filename = "example.xlsx";
try (FileOutputStream outputStream = new FileOutputStream(filename)) {
// 将工作簿写入文件
workbook.write(outputStream);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
// 关闭工作簿资源
workbook.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}