クエリ テーブルを使用できます。
var sheet = (_excel.ActiveSheet as Excel.Worksheet);
var rng = sheet.Range("A1");
var qt = sheet.QueryTables.Add("ODBC;...", rng, "SELECT * FROM myTable");
qt.Refresh();
これにより、データが正しくインポートされます(たとえば、日付は実際には日付として表示されます...)。しかし、ListObject にアクセスして TableStyle を適用しようとすると、例外が発生します。
次に、次のようなリスト オブジェクトを追加するとします。
var sheet = (_excel.ActiveSheet as Excel.Worksheet);
var qt = sheet.ListObjects.Add(
Excel.Enums.XlListObjectSourceType.xlSrcQuery,
"ODBC;...",
null,
Excel.Enums.XlYesNoGuess.xlNo,
rng,
"TableStyleMedium9").QueryTable;
qt.CommandType = Excel.Enums.XlCmdType.xlCmdSql;
qt.CommandText = "SELECT * FROM myTable";
qt.Refresh();
クエリの日付は、日付ではなく 10 進数として表示されます...
後で列をフォーマットすることもできますが、問題は、ユーザーが実行時にこれを入力するときに実行されているクエリが実際にはわからないことです。そのため、Excel でこれを行うことをお勧めします。
基本的に、私が望むのは、コードの最初のビットを使用して、それに TableStyle を適用することです。
誰でも助けることができますか?