我需要一个Excel猜测数据类型问题的解决方法

Hom*_*mam 6 c# ado.net jet import-from-excel

我正在创建一个实用程序,用于将数据从Excel导入Oracle数据库,

我有一个固定的excel文件模板,

现在,当我尝试通过Jet提供程序和ADO.Net - Ole连接工具导入数据时,我发现了以下问题:由于列中存在混合数据类型,因此尚未导入某些列[string和数字],

我在互联网上寻找这个问题我发现原因是从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);
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能告诉Excel STOP GUESSING并将数据作为文本提供给我?

如果没有,你能帮我解决一下吗?

提前致谢

Hom*_*mam 7

我通过为连接字符串添加IMEX = 1找到了一个解决方案,但它有一个特殊的格式,在下面的链接中描述.

IMEX参数适用于使用混合数字和Alpha值的列.Excel驱动程序通常会扫描前几行,以确定要为每列使用的数据类型.如果根据前几行的扫描确定某列是数字,则此列中包含字母字符的任何行都将返回为Null.IMEX参数(1是输入模式)强制列的数据类型为文本,以便正确处理字母数字值.

问候