【问题标题】:Writing text with maximum length in Apache POI to cell将Apache POI中具有最大长度的文本写入单元格
【发布时间】:2018-01-09 08:40:19
【问题描述】:

对于应用程序,我必须测试文本是否适合 Apache POI 中的单元格。

为了快速测试一些东西,我编写了一个小型演示应用程序,其中我将最大允许数量的字符写入一个单元格。我遇到了我可以写入一个单元格的字符数

所以,这是演示应用程序:

Workbook wb = new HSSFWorkbook();
Sheet sheet = wb.createSheet("Test");

for (int idx = 0; idx < 5; idx++) {
    Row row = sheet.createRow(idx);
    Cell cell = row.createCell(0);
    cell.setCellValue(StringUtils.repeat("-", wb.getSpreadsheetVersion().getMaxTextLength()));
}

FileOutputStream out = new FileOutputStream("test.xls");
wb.write(out);

out.close();
wb.close();

但是在打开创建好的excel文件时,我无法读取我写入的单元格,提示单元格只能包含1到255个字符。但这与我从“wb.getSpreadsheetVersion().getMaxTextLength()”得到的不同。文本中的某些字符是否需要特殊处理?注意,直接在excel中写入超过255次“-”时,我没有任何问题。

使用“*”而不是“-”按预期工作。

【问题讨论】:

    标签: java excel apache apache-poi


    【解决方案1】:
    • Excel 单元格中的字符限制 - 32767 (2^15-1)
    • 用公式限制 Excel 单元格中的字符 - 255 (2^8-1)

    因此,如果您的第一个字符是=+,则您选择下限。

    【讨论】:

    • 有没有办法检索最大公式限制?对于基本单元格,它是 SpreadsheetVersion#getMaxCellLength,但对于公式单元格,似乎没有这种方法可用。编辑:没关系,SpreadsheetVersion#getMaxFunctionArgs 可能会成功
    • @brecht-d-m - 通常,公式单元格和文本单元格是同一个单元格。只要里面有公式,Excel就会施加限制。长话短说 - 可能
    猜你喜欢
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-04
    • 1970-01-01
    相关资源
    最近更新 更多