2013-02-06 127 views
5

我正在將SQLite中的表格導出到C#中的Excel(2010)。它工作正常。我正在使用Excel.Range.set_Value()方法。C#Interop Excel格式,如Excel的格式,如表格

如何格式化一個Excel.RangeExcel's格式(如表格)會?

+0

如同應用Excel 2010的內置表格樣式之一一樣?您可以將Range的TableStyle屬性設置爲TableStyleMedium1或任何內置的表格樣式。 –

回答

10

擴展我的評論,並添加到D斯坦利。

Range range = ws.get_Range("A1:D5"); 
wrksheet.ListObjects.AddEx(XlListObjectSourceType.xlSrcRange, range, missing, Microsoft.Office.Interop.Excel.XlYesNoGuess.xlNo, missing).Name = "MyTableStyle"; 
wrksheet.ListObjects.get_Item("MyTableStyle").TableStyle = "TableStyleMedium1"; 
+0

謝謝!我使用舊版本的Interop! – Horbert

+0

David Yenglin:這個作品令人驚歎!,我只是關心它的一個問題。我的所有coulmns原始名稱自動更改爲column1,column2,coulmn3等.......你知道如何保留原來的coulmn名稱嗎? – Mana

+2

oki,所以我通過改變一下你的代碼來解決這個問題,XlYesNoGuess.xlNo - > XlYesNoGuess.xlYes – Mana

-1

下面是做它的VBA:

ActiveSheet.ListObjects.Add xlSrcRange, Range("$J$10:$N$12"), , xlYes 

應該不會太難翻譯成自動調用。你也可以read the documentation

2

本示例選擇活動工作表中每個單元格的矩形範圍。此外,它使用Range的索引參數來獲取範圍點。此外,AddEx()(以及Interop.Excel中的大多數方法)使用默認參數,因此您不必使用System.Reflection.Missing。

// define points for selecting a range 
// point 1 is the top, leftmost cell 
Excel.Range oRng1 = oSheet.Range["A1"]; 
// point two is the bottom, rightmost cell 
Excel.Range oRng2 = oSheet.Range["A1"].End[Excel.XlDirection.xlToRight] 
    .End[Excel.XlDirection.xlDown]; 

// define the actual range we want to select 
oRng = oSheet.Range[oRng1, oRng2]; 
oRng.Select(); // and select it 

// add the range to a formatted table 
oRng.Worksheet.ListObjects.AddEx(
    SourceType: Excel.XlListObjectSourceType.xlSrcRange, 
    Source: oRng, 
    XlListObjectHasHeaders: Excel.XlYesNoGuess.xlYes);