2015-11-04 60 views
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部分格式(樣式)

回答

0

您可以在MSDN page找到所有可用元素的列表。對於您的問題的第二部分:您可以使用2.5版本附帶的OpenXMLTool來驗證您的輸出,它會告訴您文件結構有什麼問題。