C# 从Excel中的多个工作表中删除
我喜欢在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
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
。