2016-10-06 6 views
0

ここでコードはリストボックス(employeebox)の名前を取得し、そのシートの行全体を削除します。これは動作し、エラーはありません。私の問題は、チェックする必要がある19種類のシートがありますが、このコードで一度に1つしかチェックできません。 "Excel.Worksheet xlWorkSheet =(Excel.Worksheet)xlWorkBook .Worksheets [2]; "Deleteボタンをクリックすると、すべてのシートをチェックする方法はありますか?誰の助けにも大変感謝しています。Excelで複数のシートを検索するC#

private void delete_Click(object sender, EventArgs e) 
{ 
    //create excel 
    Excel.Application xlexcel = new Excel.Application(); 
    Excel.Workbook xlWorkBook = xlexcel.Workbooks.Open(@"C:\\SAMPLE.xlsx"); 
    Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets[2]; 

    //search within excel 
    Excel.Range usedRanage = xlWorkSheet.UsedRange; 
    foreach (Excel.Range row in usedRanage) 
    { 
     //grab name once selected in box 
     if (employeeBox.SelectedItem.Equals(row.Value)) 
     { 
      row.EntireRow.Delete(Excel.XlDeleteShiftDirection.xlShiftUp); 

      MessageBox.Show("Employee Deleted."); 
     } 

    } 

    xlexcel.DisplayAlerts = false; 

    xlWorkBook.SaveAs("C:\\SAMPLE.xlsx", Excel.XlFileFormat.xlWorkbookDefault, Type.Missing, 
    Type.Missing, false, false, Excel.XlSaveAsAccessMode.xlNoChange, 
    Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 

    xlWorkBook.Close(); 
    xlexcel.Quit(); 

    releaseObject(xlexcel); 
    releaseObject(xlWorkBook); 
    releaseObject(xlWorkSheet); 
} 
+1

は、シートにシートから行くの何が問題になっているのですか? –

+0

こんにちは私はちょうど楽しいコーダーです...ワークブックの既存のシートをループする必要があります。foreach(workBook.WorksheetsのExcel.Worksheetシート) – JohnG

+0

@DangerZone - あまりにも多くのコード。 –

答えて

0
private void delete_Click(object sender, EventArgs e) 
    { 
     //create excel 
     Excel.Application xlexcel = new Excel.Application(); 
     Excel.Workbook xlWorkBook = xlexcel.Workbooks.Open(@"C:\\SAMPLE.xlsx"); 
     int[] Cols = { 1 }; 
     Excel.Range curRange; 

     foreach (Excel.Worksheet sheet in xlWorkBook.Worksheets) 
     { 
      foreach (Excel.Range row in sheet.UsedRange.Rows) 
      { 
       foreach (int c in Cols) 
       { 
        curRange = (Excel.Range)row.Cells[1, 1]; 
        if (curRange.Cells.Value != null) 
        {  
         if (employeeBox.SelectedItem.Equals(sheet.Cells[row.Row, c].Value.ToString())) 
         { 
          row.EntireRow.Delete(Excel.XlDeleteShiftDirection.xlShiftUp); 

          MessageBox.Show("Employee Deleted."); 
         } 
        } 
       } 
      } 
     } 
      xlexcel.DisplayAlerts = false; 

      xlWorkBook.SaveAs("C:\\SAMPLE.xlsx", Excel.XlFileFormat.xlWorkbookDefault, Type.Missing, 
      Type.Missing, false, false, Excel.XlSaveAsAccessMode.xlNoChange, 
      Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 

      xlWorkBook.Close(); 
      xlexcel.Quit(); 

      releaseObject(xlexcel); 
      releaseObject(xlWorkBook); 


    } 
+0

これは..すべてのシートを通過し、選択したシートを削除します。 –

関連する問題