2016-05-12 43 views
0

//這裏我試圖刪除從第1列 開始的所有行到35.但是在刪除記錄時,有些記錄被丟棄並且 其不刪除所有行。我無法理解 問題實際在哪裏。這是任務管理器的問題,但是我已經在殺死exe文件。我正在遍歷從第二行到最後一行的所有行,因此,如果記錄不是空的,我將逐個刪除記錄。我想刪除第1列到第35列的excel中的記錄

public static void GetIncidentExcel(string Incident_Path, List<excelObj> ListTickets) 
{ 

    lastRow = 0; 
    MyApp = new Excel.Application(); 
    // MyApp.Visible = false; 
    MyBook = MyApp.Workbooks.Open(Incident_Path); 
    MySheet = (Excel.Worksheet)MyBook.Sheets["BOXI_summary"]; // Explict cast is not required here 
    lastRow = MySheet.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell).Row; 

    for (int i = 2; i <= lastRow; i++) 
    { 
     Array MyValues = (Array)MySheet.get_Range("A" + i.ToString(), "AI" + i.ToString()).Cells.Value; 

     if (Convert.ToString(MyValues.GetValue(1, 1)) == "" && Convert.ToString(MyValues.GetValue(1, 2)) == "" && Convert.ToString(MyValues.GetValue(1, 3)) == "" && 
      Convert.ToString(MyValues.GetValue(1, 4)) == "" && Convert.ToString(MyValues.GetValue(1, 5)) == "" && Convert.ToString(MyValues.GetValue(1, 6)) == "" && 
      Convert.ToString(MyValues.GetValue(1, 7)) == "" && Convert.ToString(MyValues.GetValue(1, 8)) == "" && Convert.ToString(MyValues.GetValue(1, 9)) == "" && 
      Convert.ToString(MyValues.GetValue(1, 10)) == "" && Convert.ToString(MyValues.GetValue(1, 11)) == "" && Convert.ToString(MyValues.GetValue(1, 12)) == "" && 
      Convert.ToString(MyValues.GetValue(1, 13)) == "" && Convert.ToString(MyValues.GetValue(1, 14)) == "" && Convert.ToString(MyValues.GetValue(1, 15)) == "" && 
      Convert.ToString(MyValues.GetValue(1, 16)) == "" && Convert.ToString(MyValues.GetValue(1, 17)) == "" && Convert.ToString(MyValues.GetValue(1, 18)) == "" && 
      Convert.ToString(MyValues.GetValue(1, 19)) == "" && Convert.ToString(MyValues.GetValue(1, 20)) == "" && Convert.ToString(MyValues.GetValue(1, 21)) == "" && 
      Convert.ToString(MyValues.GetValue(1, 22)) == "" && Convert.ToString(MyValues.GetValue(1, 23)) == "") 
      break; 
     else 
     { 
      Excel.Range cells = MySheet.get_Range("A" + i.ToString(), "AI" + i.ToString()); 
      cells.Delete(); 
     } 

    } 
+0

嘗試向後運行循環。 –

+0

你是誰? :O – Kritner

+0

我試過向後循環,不工作。有些記錄沒有刪除。 – Dilip

回答

1

嘗試的東西取代你的循環是這樣的:

for (int i = lastRow; i >= 2; i--) 
{ 
    if (MyApp.WorksheetFunction.CountA(MySheet.get_Range("A" + i.ToString(), "AI" + i.ToString())) == 0) 
    { 
     MySheet.get_Range("A" + i.ToString(), "AI" + i.ToString()).Delete(Excel.XlDirection.xlUp); 
    } 
} 

可以使用WorksheetFunction對象來檢查所有的細胞是空的,和刪除行的時候,你應該總是循環向後

+0

感謝您的寶貴意見。但是,行又被刪除了。 – Dilip

+0

當你說「行」時,你是否真的想要刪除_entire_行?或者只是列A中的單元格:AI?當您嘗試刪除它們時,是否收到任何例外情況? –

+0

是的不是整行,而是列1到35的所有行。 – Dilip

相關問題