2012-10-19 72 views
0

從C#Windows窗體讀取Excel文檔..有25個工作表在Excel工作簿..我可以讀取第一個工作表成功..但是當我改變它到工作表2 ..它會不工作..我不是使用OLEDB ..我想在一個文件中讀取多個Excel文件而不使用OLEDB在C#

我想在每一個表來讀取100行..以下是我的代碼...

`  dt.Columns.Add("Amount", typeof(double)); 
     dt.Columns.Add("ChequeNo", typeof(int)); 
     dt.Columns.Add("month", typeof(int)); 


     int AmountRow = 100; 
     int ChequeNoRow = 101; 
     int Column = 3; 

     xlApp = new Excel.ApplicationClass(); 
     xlWorkBook = xlApp.Workbooks.Open(path, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); 
     xlWorkSheet = (Excel.Worksheet)xlWorkBook.Sheets[2];\\This place is the changing worksheets 

     range = xlWorkSheet.UsedRange; 

     double chequeAmount; 
     double chequeNo; 

     for (int i = Column; i < 15; i++) 
     { 
      chequeAmount = (double)(range.Cells[AmountRow, i] as Excel.Range).Value2; 
      chequeNo = (double)(range.Cells[ChequeNoRow, i] as Excel.Range).Value2; 

      if (chequeNo != 0.0) 
      { 
       dt.Rows.Add(Convert.ToDouble(chequeAmount), Convert.ToInt32(chequeNo), i); 
      } 
     } 

     dataGridView1.DataSource = dt; 
     xlWorkBook.Close(true, null, null); 
     xlApp.Quit(); 

     releaseObject(xlWorkSheet); 
     releaseObject(xlWorkBook); 
     releaseObject(xlApp);` 

releaseObject方法不在這裏..那些工作完美...

`xlWorkSheet = (Excel.Worksheet)xlWorkBook.Sheets[1];` 

這是我改變我的工作表。以下行給出了一個例外。[零點異常]

chequeAmount = (double)(range.Cells[AmountRow, i] as Excel.Range).Value2;

希望你就會知道答案..

+0

改爲使用[Linq-To-Excel](http://code.google.com/p/linqtoexcel/)。這絕對是真棒。 – Enigmativity

+0

有一些異常兄弟...我們建議不要使用任何LinQ ..多數民衆贊成在問題..謝謝你的評論.. – tharindlaksh

+0

這似乎是一個奇怪的要求。爲什麼你不能使用LINQ? – Enigmativity

回答

5

試試這個:

xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets[2];

Sheets財產可包括非工作表,這可能是在方案中的問題。

+0

謝謝你的時間伴侶..但這不工作...:D – tharindlaksh

相關問題