Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.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 COM互操作实例_C#_Excel_Office Interop - Fatal编程技术网

C# 重新连接到断开连接的Excel COM互操作实例

C# 重新连接到断开连接的Excel COM互操作实例,c#,excel,office-interop,C#,Excel,Office Interop,我有一个第三方应用程序,正在使用Excel COM互操作将数据导出到Excel。他们的程序中有一个bug,导致它在显示Excel实例之前失败。但是,根据显示的堆栈跟踪,从发生异常的位置,我需要的信息已经写入Excel工作表 是否有任何方法可以使用Microsoft.Office.Interop.Excel命名空间连接到现有的Excel实例,而不是生成自己的实例?或者有没有其他方法可以使孤立的Excel实例可见,以便保存它完成的内容 请注意,程序关闭后,EXCEL.exe仍在任务管理器中可见,因

我有一个第三方应用程序,正在使用Excel COM互操作将数据导出到Excel。他们的程序中有一个bug,导致它在显示Excel实例之前失败。但是,根据显示的堆栈跟踪,从发生异常的位置,我需要的信息已经写入Excel工作表

是否有任何方法可以使用
Microsoft.Office.Interop.Excel
命名空间连接到现有的Excel实例,而不是生成自己的实例?或者有没有其他方法可以使孤立的Excel实例可见,以便保存它完成的内容


请注意,程序关闭后,EXCEL.exe仍在任务管理器中可见,因此在应用程序断开连接后,该实例仍处于活动状态并正在运行


更多详细信息:程序所做的是从自己的(专有)数据库导出报告,但是由于某种原因,数据库中的某些记录格式不正确,并导致在生成报告时发生
整数溢出
错误。查看堆栈跟踪,似乎在报告末尾生成摘要时发生了整数溢出

对于我的使用,我不需要摘要,只需要报告中的行项目,因此我希望看到它到目前为止做了哪些工作,但是它与之通信的
EXCEL.exe
实例不可见

如果我为不同的日期范围运行报告,那么报告生成的结果很好,这只是一天中的一条记录导致该特定输入集失败的原因

与应用程序提供商签订的支持合同已到期,管理层无意续签,因为我们正在切换到新供应商(这就是生成报告的原因,该报告将用作数据转换的数据源)。因此,我的任务是“修复它”,以便可以移动数据



最终更新:我问这个问题的原因已经解决了。我可以通过程序本身查看每条记录,发现其中一个字段设置为16274176.00的记录(正常值为100(不要问我为什么看起来是浮点数会导致
整数溢出
错误)),一旦我将其更改为0.00,报告就会很好地打印出来。然而,我仍然想知道我的原始问题是否有答案,因为我认为这将是我工具箱中一个有用的工具。

关于你的原始问题,我认为它实际上可能是这里所问问题的重复:

这篇博文给出了几个答案:它为您提供了一个选项板,让您可以选择如何从托管代码连接到已经运行的Office应用程序


博客帖子以及给出的答案也包含示例代码,以说明如何做到这一点。

关于您最初的问题,我认为它实际上可能与此处的问题重复:

这篇博文给出了几个答案:它为您提供了一个选项板,让您可以选择如何从托管代码连接到已经运行的Office应用程序


博客帖子以及给出的答案还包含示例代码,以说明如何做到这一点。

您是否有权访问第三方源代码或创建COM互操作实例的任何源代码..?没有(根据我在disassembler中的研究,它似乎是用delphi编写的,因此也没有像ILSpy这样的工具可用),我将编写自己的工具,在第三方应用程序崩溃后收集碎片。该程序以前是否运行过而没有失败?似乎你必须投入时间。要么导出大量具有小日期范围的报告,并将它们合并到一个大报告中,要么搜索损坏的数据(如果你确定有)通过系统地玩日期范围…@erich007我知道日期,只是从那一天起我能得到的一切。(你的第一个建议是我目前的解决方案,一个是在坏日期之前导出所有内容,一个是在坏日期之后导出所有内容,并对这两个项目的行项目进行处理。但我仍然希望在这一天从导出中得到我所能得到的)您是否可以访问第三方源代码或创建COM互操作实例的任何源代码?不,我没有(从我在dissassembler中找到的内容来看,它似乎是用delphi编写的,因此也没有像ILSpy这样的工具可用),我将编写自己的工具,在第三方应用程序崩溃后收集碎片。该程序以前是否运行过而没有失败?似乎你必须投入时间。要么导出大量具有小日期范围的报告,并将它们合并到一个大报告中,要么搜索损坏的数据(如果你确定有)通过系统地玩日期范围…@erich007我知道日期,只是从那一天起我能得到的一切。(你的第一个建议是我目前的解决方案,一个是在坏日期之前导出所有内容,一个是在坏日期之后导出所有内容,并对这两个项目的行项目进行处理。但我仍然希望在这一天从导出中得到我所能得到的)