【问题标题】:Reading from excel file using oledb - empty strings使用 oledb 从 excel 文件中读取 - 空字符串
【发布时间】:2013-12-10 13:51:18
【问题描述】:

我正在使用oledb 从 excel 文件中读取数据。

    DataTable sheet1 = new DataTable();
    string excelCS = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";" + "Extended Properties=\"Excel 12.0 Xml;HDR=NO;TypeGuessRows=0;ImportMixedTypes=Text\"";

    using (OleDbConnection connection = new OleDbConnection(excelCS))
    {
        connection.Open();
        string selectSql = @"SELECT * FROM [Sheet1$]";   
        using (OleDbDataAdapter adapter = new OleDbDataAdapter(selectSql, connection))
        {
            adapter.Fill(sheet1);
        }
        connection.Close();
    }

但是文件的某些单元格存在问题。

对于某些单元格,我得到一个空值而不是文本。我试图将一些其他文本放入这些单元格中,但没有奏效——我仍然得到空字符串。 但是在删除列并再次插入后,我的应用程序得到了正确的单元格值。重要的是问题不在于列中的所有单元格。

这是单元格格式的问题还是什么?这个 excel 文件将由另一个系统生成,所以我无法手动修改它。

有没有人建议什么是错的,我该怎么办?

【问题讨论】:

  • 你试过IMEX=1吗?
  • 谢谢,我第一次这样做,我不知道。现在它完美地工作了。非常感谢!
  • 很高兴它有帮助。阅读HERE 了解更多关于 IMEX 的信息

标签: c# excel datatable oledb


【解决方案1】:

在连接字符串的末尾使用IMEX = 1。这将解决您的问题。

始终使用 IMEX=1 是检索混合数据的更安全的方法 列。 ..”

请记住,当您使用Update 而不是Selecting 时,有时使用IMEX 会出现一些错误。

【讨论】:

    【解决方案2】:

    使用此方法将 Execel 转换为 C# 中没有空字符串的数据集

     public static DataSet ConvertExcelToDataTable(string FileName)  
        {
            DataSet ds = new DataSet();
            string strConn = "";
    
            strConn = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + FileName + ";Extended Properties=\"Excel 8.0; HDR=YES; IMEX=1;\"";
            OleDbDataAdapter da = new OleDbDataAdapter
            ("SELECT * FROM [Sheet1$]", strConn);
    
    
            da.Fill(ds);
    
            return ds;          
        }  
    

    它将返回数据集。

    【讨论】:

      【解决方案3】:

      我遇到了这个问题。我发现在返回空白值的单元格上,数据看起来像字符串,但其余数据看起来像数字,因此 Excel 将字符串存储在与数字不同的位置。我将列格式更改为文本,所有数据都被拾取。

      此线程可能有助于更改格式:Format an Excel column (or cell) as Text in C#?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多