样式表所需的元素

时间:2015-11-04 18:43:27

标签: excel openxml openxml-sdk

我的任务是将所有Excel Interop转换为OpenXML,我目前正在了解它的格式。我正在关注this example,我已将其剪切为以下代码:

private Stylesheet GenerateStyleSheet() {
    // see http://blogs.msdn.com/b/chrisquon/archive/2009/11/30/stylizing-your-excel-worksheets-with-open-xml-2-0.aspx for example

    return new Stylesheet(
    new Fonts(
    new Font( // Index 0 - The default font.
    new FontSize() {
        Val = 13
    },
    new Color() {
        Rgb = new HexBinaryValue() {
            Value = "000000"
        }
    },
    new FontName() {
        Val = "Calibri"
    }),
    new Font( // Index 1 - The bold font.
    new Bold(),
    new FontSize() {
        Val = 13
    },
    new Color() {
        Rgb = new HexBinaryValue() {
            Value = "000000"
        }
    },
    new FontName() {
        Val = "Calibri"
    })),
    new Fills(
    new Fill( // Index 0 - The default fill.
    new PatternFill() {
        PatternType = PatternValues.None
    }),
    new Fill( // Index 1 - The default fill of gray 125 (required)
    new PatternFill() {
        PatternType = PatternValues.Gray125
    }),
    new Fill( // Index 2 - The yellow fill.
    new PatternFill(
    new ForegroundColor() {
        Rgb = new HexBinaryValue() {
            Value = "FFFFFF00"
        }
    }) {
        PatternType = PatternValues.Solid
    })),
    new Borders(
    new Border( // Index 0 - The default border.
    new LeftBorder(),
    new RightBorder(),
    new TopBorder(),
    new BottomBorder(),
    new DiagonalBorder())),
    new CellFormats(
    new CellFormat() {
        FontId = 0,
    }, // Index 0 - The default cell style.  If a cell does not have a style index applied it will use this style combination instead
    new CellFormat() {
        FontId = 1, ApplyFont = true
    } // Index 1 - Bold 
    )); // return
}

请注意,在我的示例中,没有单元格格式引用任何边框,因此我不需要border元素。但是,如果我将其注释掉,生成的Excel文件在打开时会产生错误。

样式表中是否需要此元素?

如果我用new Borders(new Border())替换边框部分,它似乎工作正常。只是想知道是否有人知道这一点,而我不必阅读整个ECMA规范。

更新:至少,任何人都有办法从Excel获得比修复的记录更多详细错误:来自/xl/styles.xml部分(样式)的格式

1 个答案:

答案 0 :(得分:0)

您可以在MSDN page上找到所有可用元素的列表。对于问题的第二部分:您可以使用2.5版本附带的OpenXMLTool来验证输出,它会告诉您文件结构有什么问题。