C # – Excel: Supprimer la ligne, en fonction de la valeur dans la première colonne

Imaginez que vous avez la colonne A. Il y a 100 lignes et dans les cellules sont des nombres, comme 1, 2, 3 jusqu'à 100 ..

Comment puis-je programmer (C #) Supprimer une ligne spécifique, par exemple: Supprimer la ligne quelle valeur dans la colonne A est 5 ..

Je travaille avec Microsoft.Office.Interop.Excel et c'est le code associé:

Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(@"C:\Users\fre\Desktop\TestDatei.xls"); Microsoft.Office.Interop.Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1]; Microsoft.Office.Interop.Excel.Range xlRange = xlWorksheet.UsedRange; xlWorksheet.Select(Type.Missing); Microsoft.Office.Interop.Excel.Range range = xlWorksheet.get_Range("B1:B5", Type.Missing); range.Delete(Microsoft.Office.Interop.Excel.XlDeleteShiftDirection.xlShiftUp); 

parce que j'étais intéressé aussi, j'ai fait une enquête sur le Web et créé un certain code d'exemple. peut-être que cela peut vous aider:

  private void DeleteCells(object sender, EventArgs e) { // create excel-instance: Excel.Application excel = new Excel.Application(); // open the concrete file: Excel.Workbook excelWorkbook = excel.Workbooks.Open(@"D:\test.xls"); // select worksheet. NOT zero-based!!: Excel._Worksheet excelWorkbookWorksheet = excelWorkbook.Sheets[1]; // create a range: Excel.Range usedRange = excelWorkbookWorksheet.UsedRange; // iterate range foreach (Excel.Range r in usedRange) { // check condition: if (r.Value2 == 5.0F) // if match, delete and shift remaining cells up: r.Delete(Excel.XlDeleteShiftDirection.xlShiftUp); } // save changes (!!): excelWorkbook.Save(); // cleanup: if (excel != null) { Process[] pProcess; pProcess = System.Diagnostics.Process.GetProcessesByName("Excel"); pProcess[0].Kill(); } } 

salutations!

jens

Si vous souhaitez supprimer la ligne entière, essayez ceci, cela fonctionne

  Range usedRanage=sheet.UsedRange; foreach (Range r in usedRanage) { if (Convert.ToSsortingng(r.Value2)=="RETRIEVE") { r.EntireRow.Delete(XlDeleteShiftDirection.xlShiftUp); } }