“s”属性在XLSX中的单元格标记中表示什么

时间:2010-07-01 01:56:02

标签: xml tags cell xlsx

在XLSX文件(Excel 2007)中的工作表的XML中,“t”属性等于“s”的单元格标记是字符串类型。需要通过sharedStrings文档查找并转换c中的value标记。但是,有些单元格的s =“237”并且根本没有t属性。 value标签有一个像39448这样的整数,它与sharedStrings文档无关。 Excel中显示的值是日期1/1/2008。

s属性在XLSX中的c标记中表示什么?

未知值

<c r="B47" s="237">
    <v>39448</v>
</c>

共享字符串值

<c r="C47" t="s">
    <v>7</v>
</c>

2 个答案:

答案 0 :(得分:7)

s属性指的是一种风格。 “237”是styles.xml文件中定义的样式。

<v>39448</v>

...很可能是双格式的日期。样式237告诉excel以日期格式显示 39448

您可以在此处查看其工作原理示例:http://blogs.msdn.com/b/brian_jones/archive/2007/05/29/simple-spreadsheetml-file-part-3-formatting.aspx

答案 1 :(得分:2)

s属性引用等于237,指向xlsx文件中包含的styles.xml文件中父元素中找到的第237个元素。

如果单元格值是日期,则该元素可以类似于以下代码

<xf numFmtId="167" 
    fontId="6" 
    fillId="0" 
    borderId="6" 
    xfId="3" 
    applyNumberFormat="1" 
    applyFont="1" 
    applyFill="1" 
    applyBorder="1" 
    applyAlignment="1">
        <alignment horizontal="center"/>
</xf>

此时我们没有看到此单元格代表日期类型。 要理解这一点,我们必须找到&lt; numFmtId&gt;以“167”为关键。

此值可在styles.xml文件的开头找到

<numFmts count="7">
    <numFmt numFmtId="164" formatCode="[$-409]d\-mmm\-yy;@"/>
    <numFmt numFmtId="165" formatCode="0.000"/>
    <numFmt numFmtId="166" formatCode="0.0"/>
    <numFmt numFmtId="167" formatCode="[$-409]d\-mmm\-yyyy;@"/>
    <numFmt numFmtId="168" formatCode="0.0%"/>
    <numFmt numFmtId="169" formatCode="00000"/>
    <numFmt numFmtId="170" formatCode="0.0000"/>
</numFmts>

numFmtId =“167”的行表示单元格的值是使用以下字符串格式化的日期“[$ -409] d-mmm-yyyy; @”

在简历中,要查找单元格是否包含数字或日期,我们必须

  1. 找到&lt; c&gt;的S(= style)属性元件
  2. 找到&lt; xf&gt;的numFmtId属性xlsx文件中styles.xml文件中的元素。
  3. 找到&lt; numFmt&gt;的formatCode属性将numFmtId作为键
  4. 查看格式是日期格式还是数字格式
  5. 我希望能帮到别人。