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

时间:2016-03-02 15:32:35

标签: c# excel

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

代码

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;

    }

1 个答案:

答案 0 :(得分:1)

我强烈建议您尝试使用ClosedXML,因为这样可以更轻松地使用Excel。特别是使用ClosedXML,您可以使用如下行:

ws.Row(5).Delete();

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

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

或者

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

它们还具有类型特定的值赋值:

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

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

编辑: 我错过了关于多个工作表的部分,所以在这里。 XLWorkbook类型具有属性Worksheets,它是工作簿中所有工作表的可枚举。使用此选项可获取要在

上删除行的工作表