Java 将Apache POI中最大长度的文本写入单元格

Java 将Apache POI中最大长度的文本写入单元格,java,excel,apache,apache-poi,Java,Excel,Apache,Apache Poi,对于应用程序,我必须测试文本是否适合ApachePOI中的单元格 为了快速测试一些东西,我编写了一个小的演示应用程序,其中我向一个单元格写入了允许的最大字符数。我遇到了我可以写入单元格的字符数 这是演示应用程序: Workbook wb = new HSSFWorkbook(); Sheet sheet = wb.createSheet("Test"); for (int idx = 0; idx < 5; idx++) { Row row = sheet.createRow(i

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

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

这是演示应用程序:

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();
Workbook wb=new HSSFWorkbook();
工作表=wb.createSheet(“测试”);
for(intidx=0;idx<5;idx++){
行=sheet.createRow(idx);
Cell Cell=row.createCell(0);
cell.setCellValue(StringUtils.repeat(“-”,wb.getSpreadsheetVersion().getMaxTextLength());
}
FileOutputStream out=新的FileOutputStream(“test.xls”);
wb.写(出);
out.close();
wb.close();
但是当打开创建的excel文件时,我无法读取写入的单元格,提示该单元格只能包含1到255个字符。但这与我从“wb.getSpreadsheetVersion().getMaxTextLength()”中得到的不同。文本中的某些字符需要特殊处理吗?请注意,在将255次以上的“-”直接写入excel时,我没有任何问题

使用“*”而不是“-”可以正常工作。

  • Excel单元格中字符的限制-32767(2^15-1)
  • Excel单元格中带公式的字符限制-255(2^8-1)

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

是否有方法检索最大公式限制?对于基本单元格,它是SpreadsheetVersion#getMaxCellLength,但是对于公式单元格,似乎没有这样的方法可用。编辑:无需担心,电子表格版本#getMaxFunctionArgs可能会执行以下操作trick@brecht-d-m-通常,公式单元格和文本单元格是同一单元格。只要里面有一个公式,Excel就会设置限制。因此长话短说——可能不是。