C# 如何强制ADO.NET将Excel列的类型推断为字符串而不是双精度?

C# 如何强制ADO.NET将Excel列的类型推断为字符串而不是双精度?,c#,.net,sql,excel,ado.net,C#,.net,Sql,Excel,Ado.net,excel文件中有一列包含字符串和数字。我通过反复试验发现,ADO.NET根据前8行的单元格类型推断列的类型。发生这种情况时,列下的所有字符串都不会添加到DataTable中 我的目标是让ADO.NET将该列下的值作为字符串读取 如何做到这一点?将imex=1添加到连接字符串中,类似于: string sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + savePath +

excel文件中有一列包含字符串和数字。我通过反复试验发现,ADO.NET根据前8行的单元格类型推断列的类型。发生这种情况时,列下的所有字符串都不会添加到DataTable中

我的目标是让ADO.NET将该列下的值作为字符串读取


如何做到这一点?

将imex=1添加到连接字符串中,类似于:

    string sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
     "Data Source=" + savePath +
      "; Extended Properties=" + (char)34 + "Excel 8.0;IMEX=1;"
      + (char)34;

IMEX参数(1为输入模式)强制将列的数据类型设置为文本,以便正确处理字母数字值。

将IMEX=1添加到连接字符串中,类似于:

    string sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
     "Data Source=" + savePath +
      "; Extended Properties=" + (char)34 + "Excel 8.0;IMEX=1;"
      + (char)34;

IMEX参数(1为输入模式)强制将列的数据类型设置为文本,以便正确处理字母数字值。

我发现它只对前8行进行采样。这完全取决于注册表设置和IMEX。您需要检查行。0(零)表示所有行。请参阅@onedaywhen的答案“我发现了什么”,它只对前8行进行采样。这完全取决于注册表设置和IMEX。您需要检查行。0(零)表示所有行。请参阅@onedaywhen的答案