Style handing problem

Apr 9, 2014 at 5:08 PM

In Japanese xlsx, cellStyle in styles.xml is not sorted by xfId as following:

-<cellStyles count="47">
<cellStyle xfId="1" customBuiltin="1" hidden="1" builtinId="30" name="20% - アクセント 1"/>
<cellStyle xfId="2" customBuiltin="1" hidden="1" builtinId="34" name="20% - アクセント 2"/>
<cellStyle xfId="3" customBuiltin="1" hidden="1" builtinId="38" name="20% - アクセント 3"/>
<cellStyle xfId="4" customBuiltin="1" hidden="1" builtinId="42" name="20% - アクセント 4"/>
<cellStyle xfId="5" customBuiltin="1" hidden="1" builtinId="46" name="20% - アクセント 5"/>
<cellStyle xfId="6" customBuiltin="1" hidden="1" builtinId="50" name="20% - アクセント 6"/>
<cellStyle xfId="7" customBuiltin="1" hidden="1" builtinId="31" name="40% - アクセント 1"/>
<cellStyle xfId="8" customBuiltin="1" hidden="1" builtinId="35" name="40% - アクセント 2"/>
<cellStyle xfId="9" customBuiltin="1" hidden="1" builtinId="39" name="40% - アクセント 3"/>
<cellStyle xfId="10" customBuiltin="1" hidden="1" builtinId="43" name="40% - アクセント 4"/>
<cellStyle xfId="11" customBuiltin="1" hidden="1" builtinId="47" name="40% - アクセント 5"/>
<cellStyle xfId="12" customBuiltin="1" hidden="1" builtinId="51" name="40% - アクセント 6"/>
<cellStyle xfId="13" customBuiltin="1" hidden="1" builtinId="32" name="60% - アクセント 1"/>
<cellStyle xfId="14" customBuiltin="1" hidden="1" builtinId="36" name="60% - アクセント 2"/>
<cellStyle xfId="15" customBuiltin="1" hidden="1" builtinId="40" name="60% - アクセント 3"/>
<cellStyle xfId="16" customBuiltin="1" hidden="1" builtinId="44" name="60% - アクセント 4"/>
<cellStyle xfId="17" customBuiltin="1" hidden="1" builtinId="48" name="60% - アクセント 5"/>
<cellStyle xfId="18" customBuiltin="1" hidden="1" builtinId="52" name="60% - アクセント 6"/>
<cellStyle xfId="19" customBuiltin="1" hidden="1" builtinId="29" name="アクセント 1"/>
<cellStyle xfId="20" customBuiltin="1" hidden="1" builtinId="33" name="アクセント 2"/>
<cellStyle xfId="21" customBuiltin="1" hidden="1" builtinId="37" name="アクセント 3"/>
<cellStyle xfId="22" customBuiltin="1" hidden="1" builtinId="41" name="アクセント 4"/>
<cellStyle xfId="23" customBuiltin="1" hidden="1" builtinId="45" name="アクセント 5"/>
<cellStyle xfId="24" customBuiltin="1" hidden="1" builtinId="49" name="アクセント 6"/>
<cellStyle xfId="25" customBuiltin="1" hidden="1" builtinId="15" name="タイトル"/>
<cellStyle xfId="26" customBuiltin="1" hidden="1" builtinId="23" name="チェック セル"/>
<cellStyle xfId="27" customBuiltin="1" hidden="1" builtinId="28" name="どちらでもない"/>
<cellStyle xfId="46" hidden="1" builtinId="5" name="パーセント"/>
<cellStyle xfId="28" customBuiltin="1" hidden="1" builtinId="10" name="メモ"/>
<cellStyle xfId="29" customBuiltin="1" hidden="1" builtinId="24" name="リンク セル"/>
<cellStyle xfId="30" customBuiltin="1" hidden="1" builtinId="27" name="悪い"/>
<cellStyle xfId="31" customBuiltin="1" hidden="1" builtinId="22" name="計算"/>
<cellStyle xfId="32" customBuiltin="1" hidden="1" builtinId="11" name="警告文"/>
<cellStyle xfId="43" hidden="1" builtinId="6" name="桁区切り"/>
<cellStyle xfId="42" hidden="1" builtinId="3" name="桁区切り [0.00]"/>
<cellStyle xfId="33" customBuiltin="1" hidden="1" builtinId="16" name="見出し 1"/>
<cellStyle xfId="34" customBuiltin="1" hidden="1" builtinId="17" name="見出し 2"/>
<cellStyle xfId="35" customBuiltin="1" hidden="1" builtinId="18" name="見出し 3"/>
<cellStyle xfId="36" customBuiltin="1" hidden="1" builtinId="19" name="見出し 4"/>
<cellStyle xfId="37" customBuiltin="1" hidden="1" builtinId="25" name="集計"/>
<cellStyle xfId="38" customBuiltin="1" hidden="1" builtinId="21" name="出力"/>
<cellStyle xfId="39" customBuiltin="1" hidden="1" builtinId="53" name="説明文"/>
<cellStyle xfId="45" hidden="1" builtinId="7" name="通貨"/>
<cellStyle xfId="44" hidden="1" builtinId="4" name="通貨 [0.00]"/>
<cellStyle xfId="40" customBuiltin="1" hidden="1" builtinId="20" name="入力"/>
<cellStyle xfId="0" builtinId="0" name="標準"/>
<cellStyle xfId="41" customBuiltin="1" hidden="1" builtinId="26" name="良い"/>


After saveAs, xfId is renumbered as following:

-<cellStyles count="47">
<cellStyle xfId="0" customBuiltin="1" builtinId="30" name="20% - アクセント 1"/>
<cellStyle xfId="1" customBuiltin="1" builtinId="34" name="20% - アクセント 2"/>
<cellStyle xfId="2" customBuiltin="1" builtinId="38" name="20% - アクセント 3"/>
<cellStyle xfId="3" customBuiltin="1" builtinId="42" name="20% - アクセント 4"/>
<cellStyle xfId="4" customBuiltin="1" builtinId="46" name="20% - アクセント 5"/>
<cellStyle xfId="5" customBuiltin="1" builtinId="50" name="20% - アクセント 6"/>
<cellStyle xfId="6" customBuiltin="1" builtinId="31" name="40% - アクセント 1"/>
<cellStyle xfId="7" customBuiltin="1" builtinId="35" name="40% - アクセント 2"/>
<cellStyle xfId="8" customBuiltin="1" builtinId="39" name="40% - アクセント 3"/>
<cellStyle xfId="9" customBuiltin="1" builtinId="43" name="40% - アクセント 4"/>
<cellStyle xfId="10" customBuiltin="1" builtinId="47" name="40% - アクセント 5"/>
<cellStyle xfId="11" customBuiltin="1" builtinId="51" name="40% - アクセント 6"/>
<cellStyle xfId="12" customBuiltin="1" builtinId="32" name="60% - アクセント 1"/>
<cellStyle xfId="13" customBuiltin="1" builtinId="36" name="60% - アクセント 2"/>
<cellStyle xfId="14" customBuiltin="1" builtinId="40" name="60% - アクセント 3"/>
<cellStyle xfId="15" customBuiltin="1" builtinId="44" name="60% - アクセント 4"/>
<cellStyle xfId="16" customBuiltin="1" builtinId="48" name="60% - アクセント 5"/>
<cellStyle xfId="17" customBuiltin="1" builtinId="52" name="60% - アクセント 6"/>
<cellStyle xfId="18" customBuiltin="1" builtinId="29" name="アクセント 1"/>
<cellStyle xfId="19" customBuiltin="1" builtinId="33" name="アクセント 2"/>
<cellStyle xfId="20" customBuiltin="1" builtinId="37" name="アクセント 3"/>
<cellStyle xfId="21" customBuiltin="1" builtinId="41" name="アクセント 4"/>
<cellStyle xfId="22" customBuiltin="1" builtinId="45" name="アクセント 5"/>
<cellStyle xfId="23" customBuiltin="1" builtinId="49" name="アクセント 6"/>
<cellStyle xfId="24" customBuiltin="1" builtinId="15" name="タイトル"/>
<cellStyle xfId="25" customBuiltin="1" builtinId="23" name="チェック セル"/>
<cellStyle xfId="26" customBuiltin="1" builtinId="28" name="どちらでもない"/>
<cellStyle xfId="27" builtinId="5" name="パーセント"/>
<cellStyle xfId="28" customBuiltin="1" builtinId="10" name="メモ"/>
<cellStyle xfId="29" customBuiltin="1" builtinId="24" name="リンク セル"/>
<cellStyle xfId="30" customBuiltin="1" builtinId="27" name="悪い"/>
<cellStyle xfId="31" customBuiltin="1" builtinId="22" name="計算"/>
<cellStyle xfId="32" customBuiltin="1" builtinId="11" name="警告文"/>
<cellStyle xfId="33" builtinId="6" name="桁区切り"/>
<cellStyle xfId="34" builtinId="3" name="桁区切り [0.00]"/>
<cellStyle xfId="35" customBuiltin="1" builtinId="16" name="見出し 1"/>
<cellStyle xfId="36" customBuiltin="1" builtinId="17" name="見出し 2"/>
<cellStyle xfId="37" customBuiltin="1" builtinId="18" name="見出し 3"/>
<cellStyle xfId="38" customBuiltin="1" builtinId="19" name="見出し 4"/>
<cellStyle xfId="39" customBuiltin="1" builtinId="25" name="集計"/>
<cellStyle xfId="40" customBuiltin="1" builtinId="21" name="出力"/>
<cellStyle xfId="41" customBuiltin="1" builtinId="53" name="説明文"/>
<cellStyle xfId="42" builtinId="7" name="通貨"/>
<cellStyle xfId="43" builtinId="4" name="通貨 [0.00]"/>
<cellStyle xfId="44" customBuiltin="1" builtinId="20" name="入力"/>
<cellStyle xfId="45" builtinId="0" name="標準"/>
<cellStyle xfId="46" customBuiltin="1" builtinId="26" name="良い"/>


So, all cells with default style will have buildinId=30 background color.

xfId shouldn't be renumbered or internal list should be initially sorted by xfId.
Apr 9, 2014 at 5:27 PM

following change in ExcelStyles.cs works fine for me.

        XmlNode namedStyleNode = _styleXml.SelectSingleNode(CellStylesPath, _nameSpaceManager);
        if (namedStyleNode != null)
            foreach (XmlNode n in namedStyleNode)
                ExcelNamedStyleXml item = new ExcelNamedStyleXml(_nameSpaceManager, n, this);
                NamedStyles.Add(item.Name, item);

            NamedStyles.Sort((x, y) => x.StyleXfId.CompareTo(y.StyleXfId)); // ... added


Apr 13, 2014 at 5:05 PM
Thanks, we will have a look on this.