问题描述:在使用Apache POI的SXSSFWorkbook来创建Excel工作簿时,发现在自动运行时无法成功创建工作表。
解决方法:以下是一个可能的解决方案,可以尝试在创建SXSSFWorkbook对象之前设置一些参数来解决该问题。
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.streaming.SXSSFSheet;
public class ExcelCreator {
public static void main(String[] args) {
// 设置临时文件存储目录
System.setProperty("java.io.tmpdir", "path_to_temp_directory");
// 设置临时文件的最大内存阈值
// 如果设置过小,可能会导致内存溢出;如果设置过大,可能会导致写入磁盘的频率过高
System.setProperty("poi.hssf.usermodel.HSSFRow.MEMORY_THRESHOLD", "100");
// 创建SXSSFWorkbook对象
SXSSFWorkbook workbook = new SXSSFWorkbook();
// 创建工作表
SXSSFSheet sheet = workbook.createSheet("Sheet1");
// 在工作表中添加数据
// ...
// 保存工作簿
workbook.write(new FileOutputStream("path_to_output_file"));
// 关闭工作簿
workbook.close();
}
}
请注意,以上示例代码中的"path_to_temp_directory"和"path_to_output_file"需要根据实际情况进行替换,分别表示临时文件存储目录和输出文件路径。
通过设置临时文件存储目录和临时文件的最大内存阈值,可以帮助SXSSFWorkbook在自动运行时成功创建工作表。