2013-02-06 22 views
5

SQLiteからExcel(012)の表をC#にエクスポートしています。それはうまく動作します。私はExcel.Range.set_Value()メソッドを使用しています。C#テーブルのExcel形式のようなInterop Excel形式

Excel.Rangeの形式をExcel's(表のような)のようにするにはどうすればよいですか?

+0

Excel 2010のビルトインテーブルスタイルの1つとして、 RangeのTableStyleプロパティをTableStyleMedium1または組み込みのテーブルスタイルに設定できます。 –

答えて

10

私のコメントを拡大してD Stanleyに追加します。

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:これは驚くほど効果的です!ただ1つの問題です。私のcoulmnsオリジナルの名前はすべて自動的にcolumn1、column2、coulmn3などに変更されます.......あなたは元のcoulmnの名前を維持する方法を知っていますか? – Mana

+2

沖、私はあなたのコード、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);