Office 打开 XML - 在 Excel 中冻结窗格

Office Open XML - Freeze panes in Excel

我使用数据表并生成一个 Excel 文件,其中包含自定义的输出。请在此处查看 fiddle: https://jsfiddle.net/uo867xbm/

在第 19 行中,我附加了冻结 header 和第一列的部分:

var freezePanes = '<sheetViews><sheetView tabSelected="1" workbookViewId="0"><pane xSplit="1" ySplit="1" topLeftCell="B2" activePane="bottomRight" state="frozen"/></sheetView></sheetViews>';

这在 LibreOffice 中打开文件时效果很好,但 Excel 说文件已损坏。该部分似乎符合 OpenXML 标准。

Excel对XML中元素的顺序很挑剔。在您的文件中,您在 sheetViews 之前有 colssheetData 但根据 ECMA spec sheetViews 应该在其他两个之前:

<xsd:complexType name="CT_Worksheet">
    <xsd:sequence>
    <xsd:element name="sheetPr" type="CT_SheetPr" minOccurs="0" maxOccurs="1"/>
    <xsd:element name="dimension" type="CT_SheetDimension" minOccurs="0" maxOccurs="1"/>
    <xsd:element name="sheetViews" type="CT_SheetViews" minOccurs="0" maxOccurs="1"/>
    <xsd:element name="sheetFormatPr" type="CT_SheetFormatPr" minOccurs="0" maxOccurs="1"/>
    <xsd:element name="cols" type="CT_Cols" minOccurs="0" maxOccurs="unbounded"/>
    <xsd:element name="sheetData" type="CT_SheetData" minOccurs="1" maxOccurs="1"/>

您的字体似乎也有类似的问题。那里的预期顺序(对于您拥有的元素)是 namecolor 然后是 sz,但是您有 szname 然后是 color