gpt4 book ai didi

java - 为什么使用 POI 编写大型电子表格时超链接会停止工作?

转载 作者:行者123 更新时间:2023-11-30 03:45:16 24 4
gpt4 key购买 nike

我正在使用 POI 3.9 和 SXSSF 创建电子表格。当行数较少时,创建超链接就可以了。然而,随着大小的增加,处理时间大大增加,并且链接不起作用。它适用于 700 行,但不适用于 70,000 行。尝试打开文件时出现此错误:

Excel 在“out.xlsx”中发现不可读的内容。您想恢复该工作簿的内容吗?如果您信任此工作簿的来源,请单击"is"。

    public static void main(String[] args) throws Throwable {
Workbook wb = new SXSSFWorkbook(100); // keep 100 rows in memory, exceeding rows will be flushed to disk
Sheet sh = wb.createSheet();
for(int rownum = 0; rownum < 70000; rownum++){
Row row = sh.createRow(rownum);
for(int cellnum = 0; cellnum < 10; cellnum++){
Cell cell = row.createCell(cellnum);
String address = new CellReference(cell).formatAsString();
cell.setCellValue(address);
if (address.contains("A"))
setHyperlink(cell, address);
}
}

FileOutputStream out = new FileOutputStream("C:/temp/sxssf.xlsx");
wb.write(out);
out.close();
}

protected static void setHyperlink(Cell cell, String address) {
Workbook workbook = cell.getSheet().getWorkbook();
Hyperlink hyperlink = workbook.getCreationHelper()
.createHyperlink(Hyperlink.LINK_URL);
String encoded = null;
try {
encoded = URLEncoder.encode(address, "UTF-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
hyperlink.setAddress(encoded);
cell.setHyperlink(hyperlink);
}

最佳答案

关于java - 为什么使用 POI 编写大型电子表格时超链接会停止工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25919473/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com