使用 OleDb 和 Access 数据库引擎的 C# Excel INSERT 错误

标签 c# excel connection-string oledb

所有,关于这个主题有很多问题,但没有一个能解决我的问题。我编写了一个相当复杂的例程,使用 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/

相关文章:

c# - Process.Start 因为 "Insufficient system resources exist"而失败是什么意思

excel - Application.WorksheetFunction.Find 的作用是什么?

c# - 如何使用 C# 获取上传的 excel 文件的工作表名称?

c# - asp.net 报告查看器错误基础知识 : operation not allowed

vba - 如果选中复选框,则更改下一个工作表上单元格的单元格颜色

excel - VBA/Excel中行和列范围偏移的最大值是多少?

sql-server-2012 - Flyway连接字符串到SQL Server的正确语法是什么?

Excel内部数据库连接

sql-server - 如何使用共享内存协议(protocol)连接 SQL Server 的命名实例来创建有效的连接字符串?

c# - 进程包装,一些输出不显示