【发布时间】:2019-10-09 11:40:13
【问题描述】:
我收到了奇怪的 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"/>
如果我尝试在Apache POI 中调用getCellType(),我会得到NUMERIC。没关系。
但是当我使用 LibreOffice 打开文件时,我看到单元格具有“文本”类型: 对此有什么解释吗?
PS。该文件由 MS Excel 生成
【问题讨论】:
-
单元格类型和格式在 Excel 中是不同的东西!
-
@Gagravarr 你的意思是 getCellType() != Category(在图片上)吗?
-
Cell Type 是关于文件格式的存储,加上一堆可以/不能做的东西。单元格数据格式是关于如何将文件中的原始数字格式化为数字/日期/%/货币/等
-
根据您显示的
XML:在<c r="B2" s="10">中,属性s(样式索引)指向样式部分中的单元格样式,其数字格式设置为@(文本) .这意味着单元格使用数字格式文本进行格式化。这与属性t(单元格数据类型)无关。 -
@AxelRichter 谢谢你的回答,我发现字符串可以以数字格式存储
标签: java excel apache-poi openxml libreoffice-calc