我使用数据表生成一个Excel文件,并自定义输出。请在此处查看小提琴:https://jsfiddle.net/uo867xbm/
在第19行中,我附加了冻结标题的部分和第一列:
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
之前有cols
和sheetData
,但根据ECMA规范,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"/>
看起来你的字体也有类似的问题。那里(对于您拥有的元素(的预期顺序是name
、color
然后是sz
,但您拥有sz
、name
然后是color
。