15

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

XLSX 的 ac 标签中的 s 属性是什么意思?

未知值

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

共享字符串值

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

2 回答 2

10

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

于 2010-07-14T18:43:40.693 回答
4

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>

在这一点上,我们看不到这个单元格代表日期类型。要理解这一点,我们必须找到以“167”为键的<numFmtId>。

该值可以在 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. 找到 <c> 元素的 S (=style) 属性
  2. 在 xlsx 文件中的 styles.xml 文件中找到 <xf> 元素的 numFmtId 属性。
  3. 找到以 numFmtId 作为键的 <numFmt> 的 formatCode 属性
  4. 查看 format 是日期格式还是数字格式

我希望这可以帮助其他人。

于 2017-07-21T12:33:57.240 回答