我收到了奇怪的 XLSX 文件 (OOXML)。以下是其工作表 (xl/worksheets/sheet1.xml) 的一些代码片段:
<row r="2" spans="1:6" x14ac:dyDescent="0.25">
<c r="A2" s="11" t="s">
<v>33</v>
</c>
<c r="B2" s="10">
<v>444</v>
</c>
<c r="C2" s="5"/>
<c r="D2" s="12">
<v>1</v>
</c>
<c r="E2" s="5"/>
<c r="F2" s="3"/>
</row>
注意第二个单元格 - 它没有“t”属性。 根据ECMA-376 (附录 A.2,第 3918 页,第 2301 行),单元格的默认类型(如果未提及)是“n”(数字):
<xsd:attribute name="t" type="ST_CellType" use="optional" default="n"/>
如果我尝试调用 getCellType()在 Apache POI ,我得到NUMERIC
。没关系。
最佳答案
我解决了这个问题(感谢@AxelRichter 评论)。
最主要的是字符串可以存储在NUMERIC
类型的单元格中。为此,使用特殊的 @
格式。
这里是代码(Apache POI):
String fs = c.getCellStyle().getDataFormatString();
if (BuiltinFormats.getBuiltinFormat(fs)==49){
String value = ((XSSFCell)c).getRawValue();
//do something
}
关于java - OOXML 电子表格中的默认单元格类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58303313/