2011-09-19 72 views
0

我一直在研究一個在C#中讀取Excel文件的項目。有時我不得不刪除Excel表格底部的最後幾行,但是當我在代碼中進行行計數時,它仍然認爲這些行存在。如果我將鼠標懸停在整行上,右鍵單擊並點擊刪除,這將解決問題,但我正在處理多行電子表格,其中有很多行,用戶已經編輯了該行並僅使用了刪除鍵。有其他人有過這個問題嗎?如果是這樣,是否有解決這個問題?使用C的Excel問題#

回答

0

問題是,當excel查找「最後一行」時,它也包含格式化的行。刪除行時,內容將被刪除,但格式仍然存在。我目前正在使用我的項目中下面的代碼:

public int LastRow() 
{ 
     // This version also returns cells with formatting 
     // return (int)worksheet.Cells.SpecialCells(Microsoft.Office.Interop.Excel.XlCellType.xlCellTypeLastCell, System.Reflection.Missing.Value).Row; 

     // This version seems to also not work but dont know why 
     // return (int)worksheet.UsedRange.Rows.Count; 

     // This is the most reliable so far 
     return (int)worksheet.Cells.Find("*", worksheet.Cells[1, 1], XlFindLookIn.xlValues, XlLookAt.xlWhole, XlSearchOrder.xlByRows, XlSearchDirection.xlPrevious, missing, missing, missing).Row; 
} 

基本上我專門找到最後一排沒有細胞的任何內容(1,1)。

+0

這裏的工作表是什麼意思?工作表的實際名稱?你的部分代碼給我錯誤 – Juan

+0

工作表是Microsoft.Office.Interop.Excel.Worksheet。你必須創建你自己的應用程序並打開你自己的工作簿,從中你可以獲得你的工作表(我相信你已經知道如何,因爲你已經閱讀了C#中的excel)。然後使用工作表訪問Worksheet.Cells.Find函數。 – Jake