0

我在 Window server 2008 上工作,在这个服务器上我开发了一个 vb.net 2008 控制台应用程序,它打开一个 excel 2003 文件并使用它的内容来创建一个 xml 文件,所以我有两种情况:
1. 程序执行的差异:如果我从 Visual Studio 或直接从可执行文件运行应用程序,它会毫无问题地打开并处理 excel,但是如果我在 Windows 任务调度程序或执行该程序的 adtempus 中配置了一个任务,它会失败并抛出此异常:

HRESULT 的异常:Microsoft.Office.Interop.Excel.Workbooks.Open 中的 0x800A03EC-(字符串文件名、对象 UpdateLinks、对象只读、对象格式、对象密码、对象 WriteResPassword、对象 IgnoreReadOnlyRecommended、对象来源、对象分隔符、对象可编辑、对象Notify, Object Converter, Object AddToMru, Object Local, Object CorruptLoad) at .Module1.convertExcelToXmlFile(String excelFile)

我已经阅读了很多关于这个异常的内容,但目前我无法解决,所以我想知道这个程序如何执行如果两种情况都在同一台服务器中,则从 Visual Studio 正确或直接从执行但在任务上执行时失败?有没有办法解决这种行为?


2. 在控制台应用程序中,当我使用 open 方法打开 excel 文件时,excel 中的文件会出现几秒钟然后关闭,有没有办法访问 excel 文件内容但文件不显示在 Ms Excel 中?

谢谢。

4

3 回答 3

1

您不应在无人参与的过程中使用 Office Interop。

Microsoft 目前不推荐也不支持任何无人值守、非交互式客户端应用程序或组件(包括 ASP、ASP.NET、DCOM 和 NT 服务)的 Microsoft Office 应用程序自动化,因为 Office 可能表现出不稳定的行为和/或在此环境中运行 Office 时出现死锁。

如果您正在构建在服务器端上下文中运行的解决方案,您应该尝试使用已确保无人值守执行安全的组件。或者,您应该尝试找到允许至少部分代码在客户端运行的替代方案。如果您使用来自服务器端解决方案的 Office 应用程序,该应用程序将缺少许多成功运行所需的功能。此外,您将承担整体解决方案稳定性的风险。

http://support.microsoft.com/?id=257757

有许多产品可以在无人看管的情况下处理 Excel 文档并正确运行。

于 2012-05-30T13:53:08.977 回答
0

您尝试在网络上打开的 Excel 文件是什么?

如果是这样,问题很可能是因为您的任务计划程序服务及其运行的任何作业(默认情况下)在本地 SYSTEM 帐户下运行,该帐户被禁止访问网络。

如果您将任务更改为在其他帐户下运行(例如,您已授予远程文件共享权限的域帐户)。(请注意,此更改可能会影响其他计划任务的运行方式,因此您需要非常确定所需的权限。)

于 2012-05-30T13:57:04.280 回答
0

万一您还没有弄清楚,最有可能对我有用的解决方案可以在此 URL 中找到:

https://social.msdn.microsoft.com/Forums/en-US/b81a3c4e-62db-488b-af06-44421818ef91/excel-2007-automation-on-top-of-a-windows-server-2008-x64?论坛=创新办公室

如果您的服务器是 64 位服务器,请在下面提到的路径中创建一个名为“Desktop”的文件夹,即C:\Windows\SysWOW64\config\systemprofile\Desktop

如果您的服务器是 32 位服务器,请将此文件夹设为 C:\Windows\System32\config\systemprofile\Desktop

于 2014-12-02T15:05:49.480 回答