2010-08-24 221 views
3

我有一個奇怪的現象,當我嘗試使用此代碼讀取XML工作表:C#3.5閱讀Excel文件

string CONNEC_STRING = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=No;IMEX=2;\""; 
      string fullFilePath = @"C:\Tmp\TestFile.xls"; 
      using (OleDbConnection objCon = new OleDbConnection(string.Format(CONNEC_STRING, fullFilePath))) 
      { 
       using (OleDbCommand cm = new OleDbCommand("Select * From [MYCELLSRANGE]", objCon)) 
       using (OleDbDataAdapter da = new OleDbDataAdapter(cm)) 
       { 
        DataTable dt = new DataTable(); 
        objCon.Open(); 
        da.Fill(dt); 
        objCon.Close(); 
       } 
      } 

如果Excel文件被關閉,我收到錯誤「外部表不在預期格式「。 當我打開文件時,如果我執行上面的代碼,它工作正常,我可以讀取MYCELLSRANGE中包含的數據。 那麼,有沒有人有任何關於這個問題的想法? 感謝您的回答。

+0

您是否嘗試過不同的IMEX值? – Jerome 2010-08-26 11:21:40

回答

2

我相信它是因爲Jet Engine使用Excel應用程序來解釋文件。我自己遇到過這個問題。當您使用Excel.dll參考並解釋Excel文件時,您必須創建一個新的應用程序實例才能讀取該文件。 Jet只是做這件事情來獲取數據。我建議使用該代碼。

如果您想進一步的幫助,讓我知道。我已經成功地在VB.NET中完成了我的各種應用程序。