XLSX XML 单元格格式适用于 LibreOffice 但不适用于 MS Excel

XLSX XML cell formatting works in LibreOffice but not MS Excel

我修改了数据表 xlsx 导出以生成具有我的自定义样式的表。主要用于背景颜色。我的是一团糟,但它有效。它生成 xlsx 文件,在 LibreOffice 中它看起来完全像它应该的那样。但是在 Excel 中,带有样式 #3 (FFAAAA) 的单元格不是用纯黄色背景填充,而是用虚线灰色背景填充。

红色或白色背景的那些在任何地方都可以正常工作。

整个 xml 是从其他出口逆向工程。 知道 Excel 期望有什么不同吗?

<?xml version="1.0" encoding="UTF-8"?>
<styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac">
 <numFmts count="7">
  <numFmt numFmtId="0" formatCode=""/>
  <numFmt numFmtId="1" formatCode="#,##0.00_-\ [$$-45C]"/>
  <numFmt numFmtId="2" formatCode="&quot;£&quot;#,##0.00"/>
  <numFmt numFmtId="3" formatCode="[$€-2]\ #,##0.00"/>
  <numFmt numFmtId="4" formatCode="0.0%"/>
  <numFmt numFmtId="5" formatCode="#,##0;(#,##0)"/>
  <numFmt numFmtId="6" formatCode="#,##0.00;(#,##0.00)"/>
 </numFmts>
 <fonts count="2" x14ac:knownFonts="1">
  <font>
   <sz val="11" />
   <name val="undefined" />
   <color rgb="FF000000" />
  </font>
  <font>
   <sz val="11" />
   <name val="Calibri" />
   <color rgb="FF000000" />
   <b />
  </font>
 </fonts>
 <fills count="4">
  <fill>
   <patternFill patternType="none" />
  </fill>
  <fill>
   <patternFill patternType="solid">
   <fgColor rgb="FFffeeaa" />
   <bgColor indexed="64" />
   </patternFill>
  </fill>
  <fill>
   <patternFill patternType="solid">
   <fgColor rgb="FFffaaaa" />
   <bgColor indexed="65" />
   </patternFill>
  </fill>
  <fill>
   <patternFill patternType="solid">
   <fgColor rgb="FFffffff" />
   <bgColor indexed="66" />
   </patternFill>
  </fill>
 </fills>
 <borders count="2">
  <border> <left /> <right /> <top /> <bottom /> <diagonal /> </border>
  <border diagonalUp="false" diagonalDown="false"> <left style="thin"> <color auto="1" /> </left> <right style="thin"> <color auto="1" /> </right> <top style="thin"> <color auto="1" /> </top> <bottom style="thin"> <color auto="1" /> </bottom> <diagonal /> </border>
 </borders>
 <cellStyleXfs count="1">
  <xf numFmtId="0" fontId="0" fillId="0" borderId="0" />
 </cellStyleXfs>
 <cellXfs count="5">
  <xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyFont="1" applyFill="1" applyBorder="1"/>
  <xf numFmtId="0" fontId="1" fillId="0" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>
  <xf numFmtId="0" fontId="1" fillId="1" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>
  <xf numFmtId="0" fontId="1" fillId="2" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>
  <xf numFmtId="0" fontId="1" fillId="3" borderId="1" applyFont="1" applyFill="1" applyBorder="1"/>
 </cellXfs>
 <cellStyles count="1">
  <cellStyle name="Normal" xfId="0" builtinId="0" />
 </cellStyles>
 <dxfs count="0" />
 <tableStyles count="0" defaultTableStyle="TableStyleMedium9" defaultPivotStyle="PivotStyleMedium4" />
</styleSheet>

似乎 excel 总是用 patternType="gray125" 覆盖第二个。 我只是保持

<fill>
   <patternFill patternType="gray125">
   <fgColor rgb="FFffffff" />
   <bgColor rgb="FFffffff" />
   </patternFill>
</fill>

作为第二个,不管我是否真的以任何风格使用它并在此之后添加我需要的。现在它适用于 Libre Office Calc 和 MS Excel。 我希望对其他人也有帮助。