我可以使用查询表:
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();
查询中的日期显示为十进制数字而不是日期...
之后我可以对列进行格式化,但问题是当用户在运行时键入时,我实际上并不知道正在运行的查询,所以我更愿意让 Excel 来执行此操作。
所以本质上,我想要的是使用第一段代码并将 TableStyle 应用于它。
任何人都可以帮忙吗?