通过 .NET 关闭时 Excel 2007 挂起

2023-12-01

我有一个 Visual Basic .NET 程序,需要打开和关闭 Excel 电子表格。打开和阅读电子表格工作正常,但尝试关闭 Excel 2007 应用程序会导致其挂起。它似乎关闭了,但如果您查看任务管理器,应用程序仍在运行。我用来关闭它的代码是

wbkData.Close(saveChanges:=False)
appExcel.Quit()
wbkData = Nothing
appExcel = Nothing

如何让 Excel 正确关闭?


我认为您的问题的答案已包含在这里:如何在c中正确清理excel互操作对象

我从你的代码示例中看不到,但基本上,总是将你的 Excel 对象分配给局部变量,永远不要“向下两个点”,如下所示:

//FAIL

Workbook wkBook = xlApp.Workbooks.Open(@"C:\mybook.xls");

相反,单独引用每个 obj:

//WIN

Worksheets sheets = xlApp.Worksheets;
Worksheet sheet = sheets.Open(@"C:\mybook.xls");
...
Marshal.ReleaseComObject(sheets);
Marshal.ReleaseComObject(sheet);

.NET 为 COM 对象创建一个包装器,该包装器对您来说是不可见的,并且在 GC 发挥其魔力之前不会被释放。

在我发现这一点之前,每次创建一个新工作簿时,我都会在 ASP.NET 应用程序中运行下面的 hacky 代码,该工作簿检查 excel.exe 进程的年龄并杀死任何超过一分钟的进程:

//force kill any excel processes over one minute old.
try
{
    Process[] procs = Process.GetProcessesByName("EXCEL");
    foreach (Process p in procs)
    {
        if (p.StartTime.AddMinutes(1) < DateTime.Now)
        {
            p.Kill(); 
        }  
    }  
}
catch (Exception)
{}  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 .NET 关闭时 Excel 2007 挂起 的相关文章

  • 引用的程序集自动由 Visual Studio 替换

    我有 2 个项目 一个可移植类库和一个常规单元测试项目 在可移植类库中 我使用 NuGet 来引用 Microsoft BCL 可移植包 它附带 2 个程序集 System Threading Tasks dll and System Ru
  • 如何在 Linq to SQL 中使用distinct 和 group by

    我正在尝试将以下 sql 转换为 Linq 2 SQL select groupId count distinct userId from processroundissueinstance group by groupId 这是我的代码
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • 在VBA中初始化全局变量

    在 Excel 2003 中 如何声明全局变量并仅在打开工作簿时初始化它们一次 我有一些由几个宏使用的参数 基本上是输入文件的路径 目前 我的代码如下所示 global path1 path2 as string sub initPaths
  • SQLite .NET 性能,如何加快速度?

    在我的系统上 约 86000 个 SQLite 插入需要长达 20 分钟 意味着每秒约 70 个插入 我要做数百万 我怎样才能加快速度 对每一行的 SQLiteConnection 对象调用 Open 和 Close 会降低性能吗 交易有帮
  • 如何在完成之前从 ReplaySubject 获取最新值

    我需要一种方法来获取添加到 ReplaySubject 中符合特定条件的最新项目 下面的示例代码完成了我需要它做的事情 但感觉不是正确的方法 static void Main string args var o new ReplaySubj
  • Android Excel CSV 的 MIME 数据类型是什么?

    我尝试了 text csv 甚至 application vnd ms excel 但 Excel 不会显示在选择列表中 很多其他应用程序也可以 void shareCsv Uri uri Context context Intent in
  • 如何在C#背后的代码中动态创建数据模板并绑定TreeView分层数据

    我有一个场景 其中树视图动态更改其数据模板和数据绑定定义 我在 XAML 中创建了一个树视图 如下所示
  • 将 PDF 嵌入到 WPF 应用程序中

    我正在尝试在 WPF 应用程序中嵌入 显示 PDF 到目前为止 我已经尝试过这些解决方案 但没有成功 在 a 中显示 PDFWindowsFormsHost主持一个AxAcroPdf控制 类似于显示的内容here http hugeonio
  • 家庭自动化图书馆[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我是一名 C 开发人员 希望将家庭自动化作为一种 爱好 我做了一些研究 但想知道是否有人知道支持 In
  • 如何消除字符串中的所有换行符?

    我需要删除字符串中出现的所有换行符 来自数据库 我使用下面的代码来做到这一点 value Replace r n Replace n Replace r 我可以看到至少有一个角色的行为就像行尾一样幸存了下来 字符代码是8232 http w
  • SELECT 语句会受到 SQL 注入攻击吗?

    实际上有2个问题 我知道我必须尽可能多地使用存储过程 但我想知道以下内容 A 我可以从 SELECT 语句 例如 Select from MyTable 获得 SQL 注入攻击吗 B 另外 当我在 ASP NET 中使用 SQLDataSo
  • 为什么 C# 不支持类构造函数中的隐式泛型类型?

    如果编译器可以推断出泛型类型参数 C 并不要求您指定它 例如 List
  • C# 和匿名对象数组

    这样的表达是什么意思呢 obj DataSource new new Text Silverlight Count 10 Link Tags Silverlight new Text IIS 7 Count 11 Link http iis
  • WPF:Prism 对于小型应用程序来说是不是太过分了?

    如果我不将我的应用程序分成不同的模块 否则我会认为 Prism 确实是可行的方法 我应该使用 Prism 吗 我知道 Prism 提供了一个方便的实现ICommand 我可以自己在一页代码中完成 并为我们提供IEventAggregator
  • 什么时候值得使用 BindingSource?

    我想我非常了解 BindingSource 类的作用 即在数据源和 UI 控件之间提供一个间接层 它实现了 IBindingList 接口 因此还提供了对排序的支持 而且我已经经常使用它 没有太多问题 但我想知道我使用它的频率是否超过了应有
  • .NET 中是否有内置函数可以对密码进行哈希处理?

    我看到这个问题加密 散列数据库中的纯文本密码 https stackoverflow com questions 287517 encrypting hashing plain text passwords in database 我知道我
  • VB.NET 中的模块变量何时实例化?

    我想知道在程序的生命周期中 模块中的变量将被初始化 如下例所示 Module Helper Friend m Settings As New UserSettings Sub Foo End Sub Sub Bar End Sub End
  • UDP SocketException - 通常只允许每个套接字地址使用一次

    尽管这里有很多非常相似的问题 但提供的答案都没有帮助我 这让我很难过 我有一个非常大的管理系统 我的任务是为其编写一些 UDP 数据包发送 接收 我已经编写了一个原型 一切都很好 所以我开始将我的代码合并到所述系统中 然而 我现在弹出了一个
  • 使用.NET技术录制屏幕视频[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一种方法可以使用 NET 技术来录制屏幕 无论是桌面还是窗口 我的目标是免费的 我喜欢小型 低

随机推荐

  • 如何使用 NLTK nltk.tokenize.texttiling 将文本拆分为段落?

    我找到了这个将文本拆分为段落 NLTK nltk tokenize texttiling 的用法 解释如何将文本输入到文本平铺中 但是我无法实际返回按段落 主题更改标记的文本 如文本平铺下所示http www nltk org api nl
  • 如何动态更改 HTML 链接的 href 属性

    嗨 我有一个HTML链接在我的MVC3 View 我想改变它href每次用户单击它时的属性 a class tabs href educationDetails a
  • 在控制器 (ApplicationMailer) 中打开 S3 上的远程映像 - 没有这样的文件或目录 @ rb_sysopen

    我正在尝试打开通过 Paperclip 上传到 S3 的个人资料图片 以便将其作为电子邮件的在线附件提交 虽然我收到错误 No such file or directory rb sysopen 这是我有问题的代码 attachments
  • HSQLDB问题:从Java代码启动HSQL数据库

    当我必须为我的应用程序运行 HSQLDB 时 我必须从命令提示符执行此操作 因此我总是双击 Server bat 批处理文件 来启动服务器 其中包含 java classpath war WEB INF lib hsqldb jar org
  • 将变量从 Scriptlet 传递到 Javascript。

    我有这个代码片段 我想要做的是在我的 JavaScript 函数 gotoa 中获取变量 temp1 的值 在这个特
  • 用于将数据从一个表复制到另一个表的存储过程

    I have 成对的桌子在格式中TABLE and TABLE TWIN now TABLE是包含大量数据的主表 TABLE TWIN是一个具有完全相同字段但数据很少 不同数据 的表 现在我想复制所有行TABLE TWIN to TABLE
  • 返回指向数组的指针的函数

    我成功地使用了可变长度数组C我现在有以下内容 include
  • 安装张量流版本0.12

    我如何在 Windows x64 CPU 上安装tensorflow 0 12 如果无处可寻 我尝试通过 pip 安装 python 3 6 没有解决 pip install user install tensorflow 0 12 还用
  • 在程序中创建表

    我创建了表 Risiko 它应该是动态的 我以为它会那么简单 但事实并非如此 我该怎么解决呢 我做错了什么 CREATE OR REPLACE PROCEDURE TABLERISIKO IS BEGIN drop table risiko
  • .htaccess 域名重定向

    我有一个服务器 有 3 个域都指向它 所有域都位于同一网站上 www domain1 com www domain2 com www domain3 com 如何使用 htaccess 将 www domain3 com 重定向到 www
  • 音频文件无法在设备上运行,但可以在模拟器上运行

    我正在 iPhone 应用程序中播放音频 但问题是它在模拟器上工作正常 但在设备上不起作用 这是我的代码 当此代码运行时 它只是关闭应用程序 NSString thePath NSBundle mainBundle pathForResou
  • 在 Matlab 中绘制正方形曲面

    如何在中绘制正方形曲面Matlab 更准确地说 我想绘制一个表面值为 0 5 的正方形 该正方形位于 X 1 到 X 1 和 Y 2 5 到 3 5 处 我尝试了以下方法 X Y meshgrid 3 5 5 3 5 Z zeros 15
  • 如何更改TOMCAT使用的Java版本?

    我的系统上安装了 Java 1 6 和 Tomcat 5 5 但是 Tomcat 5 5 访问 Java 1 5 因此结果我收到错误Bad version number in class file使用 JSP 执行 java 代码时 如何将
  • Flutter - 允许用户输入主题标签

    你好 Flutter 新手 我想让我的用户输入一些链接到该条目的主题标签 这些标签将进入 Firestore For the hashtag I set it as a List but I m not sure how to let us
  • 如何删除已打开句柄的文件?

    问题历史 现在我用Windows 媒体播放器 SDK 9在我的桌面应用程序中播放 AVI 文件 它在 Windows XP 上运行良好 但是当我尝试运行它时在 Windows 7 上我发现了一个错误 我无法在播放后立即删除 AVI 文件 问
  • django从文件导入模板[重复]

    这个问题在这里已经有答案了 我有 3 个页面 每个 html 文件的顶部都有相同的菜单 菜单中有很多标签 当我想修改标签中的所有链接时遇到问题 我想将菜单写入另一个名为 menu txt 的文件中 并使用模板加载 menu txt 然后将菜
  • 将图像从网络摄像头发布到 Azure Face Api

    我正在尝试将从网络摄像头获取的图像上传到 Microsoft Azure Face Api 我从 canvas toDataUrl image png 获取图像 其中包含数据 Uri 我将内容类型更改为 application octet
  • 用于从字符串中删除特定 BBCode 的正则表达式

    我正在尝试编写一个简单的方法来从输入字符串中删除特定的 BBCodes 例如 我有一个输入 string input b Hello World b 我希望能够做到 Remove input b 并得到输出 Hello World 正则表达
  • Numpy 似乎产生了不正确的特征向量

    我想使用 Numpy 计算特征值和特征向量 这是我的代码 import numpy as np from numpy import linalg as LA lapl np array 2 1 1 0 0 0 1 3 0 1 0 1 1 0
  • 通过 .NET 关闭时 Excel 2007 挂起

    我有一个 Visual Basic NET 程序 需要打开和关闭 Excel 电子表格 打开和阅读电子表格工作正常 但尝试关闭 Excel 2007 应用程序会导致其挂起 它似乎关闭了 但如果您查看任务管理器 应用程序仍在运行 我用来关闭它