gpt4 book ai didi

c# - Excel 自动化 C# : How to delete multiple rows?

转载 作者:行者123 更新时间:2023-11-30 16:33:04 25 4
gpt4 key购买 nike

我有以下代码,它没有删除行,它要求我保存当前工作簿,但没有保存任何内容,EXCEL.EXE 继续在任务管理器中运行:

protected void OpenExcelWorkbook(string fileName)
{
_app = new Excel.Application();

if (_book == null)
{
_books = _app.Workbooks;
_book = _books.Open(fileName, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing);
_sheets = _book.Worksheets;
}
}

protected void CloseExcelWorkbook()
{
_book.Save();
_book.Close(false, Type.Missing, false);
}


protected void NAR(object o)
{
try
{
if (o != null)
System.Runtime.InteropServices.Marshal.ReleaseComObject(o);
}
finally
{
o = null;
}
}

private void button1_Click(object sender, EventArgs e)
{
OpenExcelWorkbook(@"C:\Book2.xls");
_sheet = (Excel.Worksheet)_sheets[1];
_sheet.Select(Type.Missing);

Excel.Range range = _sheet.get_Range("A1", "A3");
range.EntireRow.Delete(Type.Missing);
NAR(range);
NAR(_sheet);
CloseExcelWorkbook();
NAR(_book);
_app.Quit();

NAR(_app);
}

最佳答案

我无法准确重现您的问题。但是,为了完全终止 EXCEL.EXE 进程,您需要确保对您引用的每个 COM 对象调用 ReleaseComObject 方法。

为此,您可以按如下方式更新代码:

private void button1_Click(object sender, EventArgs e)
{
OpenExcelWorkbook(@"C:\Book2.xls");
_sheet = (Excel.Worksheet)_sheets[1];
_sheet.Select(Type.Missing);

Excel.Range range = _sheet.get_Range("A1", "A3");
Excel.Range entireRow = range.EntireRow; // update
entireRow.Delete(Type.Missing);
NAR(entireRow); // update
NAR(range);
NAR(_sheet);
NAR(_sheets); // update
CloseExcelWorkbook();
NAR(_book);
NAR(_books); // update
_app.Quit();

NAR(_app);

}

关于c# - Excel 自动化 C# : How to delete multiple rows?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3550976/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com