当前位置: 首页 > 知识库问答 >
问题:

如何在JAVA中使用apache poi去除Excel中的警告?

曾飞沉
2023-03-14

我正在使用apache poi api在我的java应用程序中生成Excel工作表。在 excel 中设置的数据以字符串类型动态提供。对于列 1,值为字母数字。当我生成Excel时,它会在单元格上给我绿色指示,并警告“数字存储为文本”或“带有2位数年份的文本日期”。

我想去掉那个警告。我发现在excel中,我们可以将单元格标记为“忽略错误”,以忽略警告。

如何以编程方式实现它,或者是否有任何其他替代方法来实现此任务?

我还附上了显示带有绿色标记的警告的屏幕截图。

代码:

if (cellValue != null && (shouldBeRightAlign))
{
 cellType = Cell.CELL_TYPE_NUMERIC;
}
else if (cellValue != null)
{
 cellType = Cell.CELL_TYPE_STRING;
}
cell.setCellValue(cellValue);

共有3个答案

刘兴修
2023-03-14

对我来说,上面的解决方案都不起作用,但最后用一个有点复杂的变通方法摆脱了警告:像这样将值写成公式。

String asFormula = "\"" + value + "\"";
cell.setCellType(SXSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula(asFormula);

不要认为这总是一个好的解决方案,但在我的情况下,输出文件的值永远不会被修改。但它可能会帮助某人。

我使用的是apache POI的3.14版本,以防它会有所不同(在变通方法之前,我已经尝试了几个不同的版本,没有效果)。

锺离自明
2023-03-14

显然,这在Apache POI中目前是不可能的。关于该主题,有许多错误报告/RFE:

https://issues.apache.org/bugzilla/show_bug.cgi?id=58641

https://issues.apache.org/bugzilla/show_bug.cgi?id=54868

https://issues.apache.org/bugzilla/show_bug.cgi?id=46136

实际属性(表示忽略此类警告的属性)以Excel持久格式存在,并按单元格记录。据我从错误报告中所知,Apache POI并没有公开它。

为了让您了解这在Excel的xlsx格式中是什么样子:

</worksheet>
    ...
    <ignoredErrors>
        <ignoredError sqref="K192 E181 E186" numberStoredAsText="1"/>
    </ignoredErrors>    
</worksheet>

我在某处读到,这只在 xlsx(即 OOXML)中持久化,而不是以 xls 格式存在,这意味着如果 Apache POI 团队实现这一点,它将在 XSSF 包中。

严修德
2023-03-14

API现在提供了相应的方法

public void addIgnoredErrors(CellRangeAddress region,
                    IgnoredErrorType... ignoredErrorTypes)
 类似资料:
  • 我正在尝试用android显示PPT文件。我从ApachePOI开始,bcoz我还没有找到任何免费的开源jar。我从将ppt幻灯片转换为图像开始,参考此链接将PowerPoint幻灯片导出为java。awt。图表2D 这是Java语言。我找不到Dimension、BuffereImage和Graphics2D类。我已经导入了poi-scratchpad-3.8-20120326。jar在我的构建路

  • 用户可以将Excel文档保存为. xls或xml-table。结果是一个具有固定结构的xml-file,Excel可以用它纠正工作。 可以用java中的ApachePOI打开这种类型的excel文件吗? 事先谢谢你,安德烈。

  • 我有一个要求,需要将数据验证添加到整个列中,而不是特定的单元格中。我查阅了ApachePOI的文档,发现了下面的示例 但是上面的例子为特定的单元格创建了一个下拉数据验证。在这种情况下,行0,列0。列中的其余单元格没有验证。但是在实际的excel文件中,我们可以这样做,所以这应该是可能的。我尝试并搜索了很多,但无法找到解决方案。请帮助...

  • 我正在写一个程序,它需要从excel文件中读取和写入数据,而不考虑格式(xls或xlsx)。 我知道ApachePOI,但它似乎有不同的类来处理xls文件(HSSF)和xlsx(XSSF)文件。 任何人都知道我将如何实现我在这里的目标。(也欢迎使用POI以外的API的想法)。

  • 嗨,我想在第一行搜索一个字符串,如果找到了,我想移动那一列。

  • 我有个疑问 当我使用猫鼬时,我得到了上述警告。如何清除它们?