【发布时间】:2017-11-06 19:32:42
【问题描述】:
我正在处理一个 C# 项目,该项目中有一个方法可以查询许多表并将它们输出为 Excel 工作表。这些表的表名存储在一个数组中,因此命令文本是通过编程方式构建的,即,
string query = string.empty;
foreach (string tbl in tables) {
query = $"SELECT * FROM {tbl} WHERE DATEFROM BETWEEN @from AND @to"; // DATEFROM field is guaranteed to exist
// run the SQLCommand here
// e.g. I fill a ds (as DataSet object) with the query result
}
这段代码没有错误,但是一旦我使用非常方便的方式将 DataTable/Dataset 导出到 Excel
xmlMap = myWorkbook.XmlMaps.Add(ds.GetXmlSchema(), "Export");
myWorkbook.XmlImportXml(ds.GetXml(), out xmlMap, true, xlWsht.Range["A1"]);
。 . .我有时会收到一个 Excel 应用程序实例错误,提示“某些信息已导出为文本”。我不介意。然而,我的客户很生气,因为那个错误对话框没有抓住焦点,并且让用户没有意识到它在他们桌面上打开的一堆窗口下面的存在,更不用说它正在等待用户点击确定的用户响应。
经过几次实验,
// CONVERT(varchar, A_DATE_FIELD, 120)
解决了问题(避免再次弹出此错误消息)。但是,由于表的数量和每个表中的许多不同的日期时间字段,硬编码所有 SELECT CONVERT(varchar, A_DATE_FIELD, 120) 查询是不切实际的(至少在我的情况下)。
您对此有何解决方案?
提前谢谢你。
【问题讨论】:
标签: c# sql-server excel datetime