从Excel中的多个工作表中删除

我想从Excel中的多个工作表中删除行。 目前我的代码只从活动工作表中删除行。 我正在寻找单元格上的特定值,然后当我find这个值,然后我删除所有的行,直到存储在该行上的值。

private void button2_Click(object sender, EventArgs e) { Microsoft.Office.Interop.Excel.Application Excel = new Microsoft.Office.Interop.Excel.Application(); Workbook workBook = Excel.Workbooks.Open(FilePath); Worksheet ws = (Worksheet)Excel.ActiveSheet; for (int j = 1; j <= 10; j++) { for (int i = 1; i <= 20; i++) { if (Convert.ToString(((Microsoft.Office.Interop.Excel.Range)ws.Cells[j, i]).Value2) == "Matter") { for (int r = 1; r <= j; r++) { ((Range)ws.Rows[r]).Delete(XlDeleteShiftDirection.xlShiftUp); MessageBox.Show(Convert.ToString(r)); workBook.SaveAs(@"C:\Users\Separate\New.xlsx", Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookDefault, Type.Missing, Type.Missing, false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); } } } } workBook.Close(Type.Missing, Type.Missing, Type.Missing); Excel.Quit(); System.Runtime.InteropServices.Marshal.FinalReleaseComObject(Excel); Excel = null; } 

我强烈build议尝试使用ClosedXML,因为它使Excel的工作变得更容易。 特别是使用ClosedXML,你可以有这样一行:

 ws.Row(5).Delete(); 

其中ws是您的初始化工作表,并处理删除该行的繁重工作。 获取或设置单元格数据同样简单:

  ws.Cell(2, 2).Value = "Initial Value"; 

或者可选地

 ws.Cell("B2").Value = "Value; 

它们也具有types特定的值赋值,如下所示:

 ws.Cell("B2").SetValue<T>(object); 

文档非常详尽,您可以通过nuget获取软件包(注意它也需要安装DocumentFormat.OpenXML软件包)

编辑:我错过了有关多个工作表的部分,所以在这里。 XLWorkbooktypes有一个属性Worksheets,它是工作簿中所有工作表的一个枚举。 使用这个来获取你想删除行的工作表