首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用POI查找单元格的格式

使用POI查找单元格的格式
EN

Stack Overflow用户
提问于 2016-02-14 08:48:23
回答 1查看 1.2K关注 0票数 1

获得单元格的CellFormatType (DATENUMBERTEXTGENERAL)的正确方法是什么?

cell.getCellStyle.getDataFormat()返回一个短值,该值不映射到上述常量。

我不能只使用cell.getCellType,原因如下。对于某些行,值前面可能有一个字符串前缀,如<>>。在这种情况下,getCellType将返回CELL_TYPE_STRING。因此,获取基础类型的唯一方法似乎是查看列的格式。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2016-02-14 10:56:54

我不知道从CellCellFormatType的直接路线,但确定特定类型的方法有多种:

  • 通用?getDataFormat将为0(或者更可靠地说,getDataFormatString将是“通用”)
  • 日期?查看DateUtil.isCellDateFormatted
  • 短信?通常您会检查Cell.getCellType = CELL_TYPE_STRING,但是由于您说您不能这样做(请参阅下面的注释),您也可以尝试检查getDataFormatString是"@“还是"text”(这两者都是纯文本的可能性)。
  • 数?同样,通常您只需检查一下CELL_TYPE_NUMERIC。注意,日期也被认为是数字,所以首先检查日期。

(如果单元格类型为CELL_TYPE_FORMULA,则应检查getCachedFormulaResultType )

我不能只使用cell.getCellType,原因如下。对于某些行,在值的前面可能有一个字符串前缀,如<>或>

我对这个问题不熟悉。也许您有一种自定义格式,它在数字前面加上字符?在本例中,我关于文本检测的注释可能会对您有所帮助,但我建议您再次检查电子表格中是否有相关信息(也就是说,重新打开工作表时,Excel并不仅仅是聪明的):记录单元格类型、格式和格式字符串,并确认相关单元格上确实存在差异。实际上,您的单元格可能被保存为文本,没有明显的标记。在这种情况下,您需要为特定场景添加一些特殊的启发式方法。

最后,由于您似乎对CellStyle.getDataFormat返回的值感到困惑;它只是一个全表索引→格式字符串表中的索引。您可以(我通常会说应该)使用getDataFormatString直接获取字符串格式。标准单元格格式在BuiltinFormats中列出,您可以使用它作为引用来查看您可能找到的格式字符串(但始终检查格式字符串,而不是ID,否则将无法正确检测自定义格式)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35389951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档