代码之家  ›  专栏  ›  技术社区  ›  chugadie

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

  •  10
  • chugadie  · 技术社区  · 15 年前

    在XLSX文件(Excel2007)工作表的XML中,“t”属性等于“s”的单元格标记是字符串类型。C中的值标记需要通过sharedStrings文档进行查找和转换。但是,有些单元格有s=“237”,根本没有t属性。value标记有一个类似39448的整数,它与sharedStrings文档不相关。Excel中显示的值是2008年1月1日。

    在XLSX的C标记中,S属性表示什么?

    未知值

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

    共享字符串值

    <c r="C47" t="s">
        <v>7</v>
    </c>
    
    2 回复  |  直到 8 年前
        1
  •  7
  •   mscccc Jonas Schubert Erlandsson    15 年前

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

    <v>39448</v>

    …很可能是双格式的日期。样式237告诉Excel显示 三万九千四百四十八 日期格式。

    您可以在这里看到一个如何工作的示例: http://blogs.msdn.com/b/brian_jones/archive/2007/05/29/simple-spreadsheetml-file-part-3-formatting.aspx

        2
  •  2
  •   schlebe    8 年前

    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(=样式)属性
    2. 在XLSX文件的styles.xml文件中查找<xf>元素的numfmtid属性。
    3. 查找以numfmtid为键的<numfmt>的formatcode属性
    4. 查看格式是日期格式还是数字格式

    我希望这能帮助别人。