获得单元格的CellFormatType (DATE、NUMBER、TEXT、GENERAL)的正确方法是什么?
cell.getCellStyle.getDataFormat()返回一个短值,该值不映射到上述常量。
我不能只使用cell.getCellType,原因如下。对于某些行,值前面可能有一个字符串前缀,如<>或>。在这种情况下,getCellType将返回CELL_TYPE_STRING。因此,获取基础类型的唯一方法似乎是查看列的格式。
谢谢
发布于 2016-02-14 10:56:54
我不知道从Cell到CellFormatType的直接路线,但确定特定类型的方法有多种:
getDataFormat将为0(或者更可靠地说,getDataFormatString将是“通用”)CELL_TYPE_STRING,但是由于您说您不能这样做(请参阅下面的注释),您也可以尝试检查getDataFormatString是"@“还是"text”(这两者都是纯文本的可能性)。CELL_TYPE_NUMERIC。注意,日期也被认为是数字,所以首先检查日期。(如果单元格类型为CELL_TYPE_FORMULA,则应检查getCachedFormulaResultType )
我不能只使用cell.getCellType,原因如下。对于某些行,在值的前面可能有一个字符串前缀,如<>或>
我对这个问题不熟悉。也许您有一种自定义格式,它在数字前面加上字符?在本例中,我关于文本检测的注释可能会对您有所帮助,但我建议您再次检查电子表格中是否有相关信息(也就是说,重新打开工作表时,Excel并不仅仅是聪明的):记录单元格类型、格式和格式字符串,并确认相关单元格上确实存在差异。实际上,您的单元格可能被保存为文本,没有明显的标记。在这种情况下,您需要为特定场景添加一些特殊的启发式方法。
最后,由于您似乎对CellStyle.getDataFormat返回的值感到困惑;它只是一个全表索引→格式字符串表中的索引。您可以(我通常会说应该)使用getDataFormatString直接获取字符串格式。标准单元格格式在BuiltinFormats中列出,您可以使用它作为引用来查看您可能找到的格式字符串(但始终检查格式字符串,而不是ID,否则将无法正确检测自定义格式)。
https://stackoverflow.com/questions/35389951
复制相似问题