2012-06-14 125 views
2

我正在使用一些遺留代碼將Excel工作表作爲數據集返回。但是,當我遍歷結果數據集時,似乎並非所有的單元都在那裏。正在閱讀的Excel工作表有一些合併的單元格,我想知道如果這是問題。這裏是代碼:C#無法從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; 
} 

此代碼是否出現故障?任何建議表示讚賞。

回答

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;"; 

而且奏效了!

+0

所示代碼中的引號不正確。 「Excel 8.0; HDR = NO; IMEX = 1」是「擴展屬性」的值,需要用引號(在字符串中)包裝。 –

0

您是否嘗試過使用沒有合併文件的Excel文件運行相同的代碼? 這是我會嘗試,如果我不知道如果合併單元格可能會導致問題盡顯你的數據集的第一件事...

編輯澄清: 調試目的:使用相同的Excel文件,只是確保你撤消合併細胞。 更好的是從一個3行3列的excel文件開始:

第一行:單元格A1的值爲'Foo;細胞B1'酒吧',C1香蕉。 第二行:單元格A2 Foo1 B2 Bar1 < - 合併這兩個單元格。 C2 =蘋果。 第三行:單元格A3的值爲'Foo2;小區B3「BAR2」 C3橙< - 檢查下一行使用合併單元格後讀好...

+0

謝謝。同樣的結果。 – Kevin

相關問題