2

我正在使用一些旧代码将 Excel 工作表作为数据集返回。但是,当我遍历结果数据集时,似乎并非所有单元格都在那里。正在读取的 Excel 表有一些合并的单元格,我想知道这是否是问题所在。这是代码:

private DataSet Get_Spreadsheet_Data(string strFileName, string strSheetName)
{
    DataSet ds = new DataSet();
    string strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + strFileName + ";" + "Extended Properties=Excel 8.0;";
    OleDbConnection objConn = new OleDbConnection(strConnectionString);
    try
    {
        objConn.Open();
        OleDbCommand objCmdSelect = new OleDbCommand("SELECT * FROM [" + strSheetName + "$]", objConn);
        OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();
        objAdapter1.SelectCommand = objCmdSelect;
        objAdapter1.Fill(ds);
    }
    catch (Exception Ex)
    {
        //litOutput.Text = "<span style=\"color:red;\">Exception Occurred pulling data from the spreadsheet.</span><br>Details: " + Ex.Message;
    }
    finally
    {
        objConn.Close();
        objConn.Dispose();
    }
    return ds;
}

这段代码有问题吗?任何建议表示赞赏。

4

2 回答 2

2
string strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + strFileName + ";" + "Extended Properties=Excel 8.0;";

需要阅读:

string strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + strFileName + ";" + "Extended Properties="Excel 8.0;HDR=NO;IMEX=1;";

这就是诀窍!

于 2012-06-15T14:34:37.943 回答
0

您是否尝试过使用没有合并文件的 Excel 文件运行相同的代码?如果我想知道合并的单元格是否会导致填充数据集出现问题,这是我会尝试的第一件事......

编辑澄清:出于调试目的:使用相同的 Excel 文件,只需确保撤消单元格的合并。更好的是从一个 3 行 3 列的 excel 文件开始:

第一行:单元格 A1,值为 'Foo; 单元格 B1 '酒吧',C1 香蕉。第二行:单元格 A2 Foo1 B2 Bar1 <-- 合并这两个单元格。C2 = 苹果。第三行:单元格 A3,值为 'Foo2; 单元格 B3 'Bar2' C3 橙色 <-- 检查使用合并单元格后下一行是否读取良好...

于 2012-06-14T21:49:07.413 回答