所有,关于这个主题有很多问题,但没有一个能解决我的问题。我编写了一个相当复杂的例程,使用 OleDb 和 Access 数据库引擎将传递的 DataSet
/DataTable
导出到 Excel(我在 Win7 下运行 Office 2010)。问题是,无论我如何定义要写入 Excel 的列,所有值都会导出为 TEXT/STRING
字段。
我正在使用OleDbConnection
字符串
string fileName = @"F:\SomePath\MyExcel.xlsx";
string connectionString = String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=
{0};Extended Properties=""Excel 12.0 Xml;HDR=YES;MaxScanRows=0;IMEX=0""", fileName);
并尝试了许多其他connection string options运气不好。
我在代码中生成 Excel 定义,但明确地这些定义是生成的
CREATE TABLE [MetaTab] ([Table] TEXT,[Field] TEXT,[Seq] NUMBER,[DataLevel] NUMBER)
然后我生成插入代码,对于上面的示例,这是
INSERT INTO [MetaTab$]([Table],[Field],[Seq],[DataLevel])VALUES('B1A','EstabID','1','9')
这可行,但所有值都写为文本。 如何强制 Excel 采用其他数据格式?
注意:我尝试删除非字符串的撇号,但这也不起作用。我真的被困住了,任何想法将不胜感激。感谢您抽出时间。
最佳答案
我认为你做不到。 Excel 格式实际上并不类似于数据库列数据类型 - 最终底层值始终是数字或字符串;然后格式决定了它的显示方式。
即使我错了 - 我个人更喜欢使用 http://epplus.codeplex.com/生成我的 Excel 电子表格 - 您可以在其中执行许多非常高级的操作以及格式化等简单操作。
关于使用 OleDb 和 Access 数据库引擎的 C# Excel INSERT 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10349109/