首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >数据访问后关闭C#中的Excel应用程序进程

数据访问后关闭C#中的Excel应用程序进程
EN

Stack Overflow用户
提问于 2013-07-22 06:20:35
回答 17查看 175.5K关注 0票数 94

我正在用C#编写一个应用程序,它打开一个用于读/写操作的Excel模板文件。我想当用户关闭应用程序时,excel应用程序进程已经关闭,不保存excel文件。在多次运行应用程序后,请查看我的任务管理器。

我使用以下代码打开excel文件:

代码语言:javascript
复制
public Excel.Application excelApp = new Excel.Application();
public Excel.Workbook excelBook;
excelBook = excelApp.Workbooks.Add(@"C:/pape.xltx");

对于数据访问,我使用以下代码:

代码语言:javascript
复制
Excel.Worksheet excelSheet = (Worksheet)(excelBook.Worksheets[1]);
excelSheet.DisplayRightToLeft = true;
Range rng;
rng = excelSheet.get_Range("C2");
rng.Value2 = txtName.Text;

我在stackoverflow中看到了类似的问题,如this questionthis,以及测试答案,但它不起作用。

EN

回答 17

Stack Overflow用户

回答已采纳

发布于 2013-07-22 07:03:42

试试这个:

代码语言:javascript
复制
excelBook.Close(0); 
excelApp.Quit();

关闭工作簿时,您有三个可选参数:

代码语言:javascript
复制
Workbook.close SaveChanges, filename, routeworkbook 

Workbook.Close(false),或者如果你正在做后期绑定,有时使用zero Workbook.Close(0)会更容易,这就是我在自动关闭工作簿时所做的。

我还查找了它的文档,并在这里找到了它:Excel Workbook Close

谢谢,

票数 102
EN

Stack Overflow用户

发布于 2013-11-26 17:23:46

代码语言:javascript
复制
xlBook.Save();
xlBook.Close(true);
xlApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);

试试这个..。对我来说很管用。您应该释放该xl应用程序对象以停止该进程。

票数 24
EN

Stack Overflow用户

发布于 2013-07-22 06:27:41

想想看,它会杀死这个过程:

代码语言:javascript
复制
System.Diagnostics.Process[] process=System.Diagnostics.Process.GetProcessesByName("Excel");
foreach (System.Diagnostics.Process p in process)
{
    if (!string.IsNullOrEmpty(p.ProcessName))
    {
        try
        {
            p.Kill();
        }
        catch { }
    }
}

另外,你有没有试着正常关闭它?

代码语言:javascript
复制
myWorkbook.SaveAs(@"C:/pape.xltx", missing, missing, missing, missing, missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, missing, missing, missing, missing, missing);
excelBook.Close(null, null, null);                 // close your workbook
excelApp.Quit();                                   // exit excel application
excel = null;                                      // set to NULL
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17777545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档