1
我的任務是將我們所有的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
}
注意,沒有任何單元格的格式引用任何邊界又在我的例子,所以我不需要邊框元素。但是,如果我註釋掉,生成的Excel文件在打開時會產生錯誤。
樣式表中是否需要此元素?
如果我用new Borders(new Border())
代替邊界部分,它似乎工作正常。只是想知道如果有人知道這一點,我不必閱讀整個ECMA規格。
更新:至少,任何人都有辦法從Excel中獲得更詳細的錯誤輸出,而不是修復的記錄:從/xl/styles.xml部分格式(樣式)?