我正在使用apache poi api在我的java应用程序中生成Excel表。excel中设置的数据是以string类型动态出现的。表示column1,值为字母数字。当我生成Excel时,它会给我绿色的指示,上面有警告“数字存储为文本”或“文本日期,在单元格上有2位数的年份”“。
我想移除那个警告。我发现,在excel中,我们可以将单元格标记为“忽略错误”,从而忽略警告。
如何以编程方式完成此任务,或者是否有其他替代方法来完成此任务?
我也有附加的屏幕截图,显示警告与绿色标志。

代码:
if (cellValue != null && (shouldBeRightAlign))
{
cellType = Cell.CELL_TYPE_NUMERIC;
}
else if (cellValue != null)
{
cellType = Cell.CELL_TYPE_STRING;
}
cell.setCellValue(cellValue);发布于 2016-08-05 13:20:49
public void addIgnoredErrors(CellRangeAddress region,
IgnoredErrorType... ignoredErrorTypes)发布于 2015-11-22 10:11:21
显然,这在Apache中目前是不可能的。有许多关于这一问题的错误报告/RFE:
实际属性(表示忽略此类警告的属性)以Excel持久格式存在,并按每个单元格记录。据我所知,从bug报告中可以看出,Apache并没有公开它。
为了让您了解Excel的xlsx格式是什么样子:
</worksheet>
...
<ignoredErrors>
<ignoredError sqref="K192 E181 E186" numberStoredAsText="1"/>
</ignoredErrors>
</worksheet>我在某些地方读到,这只在xlsx (即OOXML)中持久存在,而不是以xls格式保存,这意味着如果Apache团队实现这一点,它将位于XSSF包中。
发布于 2016-08-23 10:13:46
对我来说,上面的解决方案都不起作用,但最后还是用了一些复杂的方法来消除警告:将这些值写成这样的公式。
String asFormula = "\"" + value + "\"";
cell.setCellType(SXSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula(asFormula);不要认为它总是一个好的解决方案,但在我的例子中,输出文件的值从未被修改过。但它可能会对某人有帮助。
我正在使用apache的3.14版本,以防它会产生影响(在解决之前,我已经尝试过几个不同的版本,但没有效果)。
https://stackoverflow.com/questions/23488221
复制相似问题