Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从Excel中的多个工作表中删除_C#_Excel - Fatal编程技术网

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

C# 从Excel中的多个工作表中删除,c#,excel,C#,Excel,我喜欢在Excel中删除多个工作表中的行。当前我的代码仅从活动工作表中删除行。我在单元格中寻找一个特定的值,然后当我找到这个值时,我将删除存储在该行中的所有行,直到该值为止 代码 private void button2_Click(object sender, EventArgs e) { Microsoft.Office.Interop.Excel.Application Excel = new Microsoft.Office.Interop.Excel.Appl

我喜欢在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;

    }
private void按钮2\u单击(对象发送者,事件参数e)
{
Microsoft.Office.Interop.Excel.Application Excel=新的Microsoft.Office.Interop.Excel.Application();
工作簿=Excel.Workbooks.Open(文件路径);
工作表ws=(工作表)Excel.ActiveSheet;

对于(int j=1;j,我强烈建议尝试使用,因为它使使用Excel变得更容易。特别是使用ClosedXML,您可以有这样一行:

ws.Row(5).Delete();
ws.Cell("B2").SetValue<T>(object);
其中ws是初始化的工作表,它处理删除该行的繁重工作。 获取或设置单元格数据同样简单:

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

ws.Cell("B2").Value = "Value;
它们还具有特定于类型的值赋值,如下所示:

ws.Row(5).Delete();
ws.Cell("B2").SetValue<T>(object);
ws.Cell(“B2”).SetValue(对象);
文档非常详尽,您可以通过nuget获得该包(注意,它还需要安装DocumentFormat.OpenXML包)

编辑:
我错过了关于多个工作表的部分,所以这里是。XLWorkbook类型有一个属性worksheets,它是工作簿中所有工作表的可枚举项。使用此属性可以获取要删除其上行的工作表。

只需使用
工作簿获取所有工作表。worksheets
,这将返回
工作表的集合et
s。现在只需在其上循环,并在每个循环的开始处将工作
工作表设置为
ws