【发布时间】:2010-08-29 14:34:03
【问题描述】:
我正在创建一个实用程序来将数据从 Excel 导入 Oracle 数据库,
我有一个固定的excel文件模板,
现在,当我尝试通过 Jet 提供程序和 ADO.Net - Ole 连接工具导入数据时,我发现以下问题:有些列尚未导入,因为它们的数据类型混合在一起列 [字符串和数字],
我在网上找了这个问题发现原因是guessing data types from Excel
加载代码:
connection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0};Extended Properties=Excel 8.0;");
string columns = "P_ID, FULL_NAME_AR, job_no, GENDER, BIRTH_DATE, RELIGION, MARITAL_STATUS, NAT_ID, JOB_Name, FIRST_HIRE_DATE, HIRE_DATE, CONTRACT_TYPE, GRADE_CODE, QUALIFICATION";
string sheetName = "[Emps$]";
OleDbCommand command = new OleDbCommand(string.Format("select {0} from {1} where p_id is not null", columns, sheetName), connection);
connection.Open();
dr = command.ExecuteReader();
DataTable table = new DataTable();
table.Load(dr);
我应该怎么做才能告诉 Excel 停止猜测并将数据作为文本提供给我?
如果没有,您能帮我解决任何问题吗?
提前致谢
【问题讨论】:
-
如何将记录从excel导入oracle?请问代码?它在哪里失败?
-
在 Excel 中不能只将整列设置为文本吗?
-
@shahkalpesh:它不会抛出任何异常,它只是忽略文本数据,因为它猜测该列的数据类型是前 8 条记录中的数字,并为非数值返回 null
-
谢谢。你能发布一些你用来从excel中读取数据的代码吗?
-
通常的解决方法是创建空的目标表并导入其中,而不是每次运行导入时都创建表。这样您就可以完全控制目标数据类型。
标签: c# ado.net jet import-from-excel