C# 使用oledb读取excel文件-空字符串

C# 使用oledb读取excel文件-空字符串,c#,excel,datatable,oledb,C#,Excel,Datatable,Oledb,我正在使用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 (OleDb

我正在使用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
。那会解决你的问题

始终使用IMEX=1是为混合数据检索数据的更安全的方法 专栏。。"


请记住,有时在使用
Update
而不是
Select
ing时,使用IMEX会出现一些错误。

使用此方法将EXCEL转换为不带空字符串的数据集#


它将返回数据集。

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


此线程可能有助于更改格式:

您是否尝试了
IMEX=1
?谢谢,我是第一次这样做,但我并不知道。现在它工作得很好。非常感谢!很高兴它有帮助。请阅读了解更多有关IMEX的信息
 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;          
    }