2013-02-06 96 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);