【发布时间】:2012-12-26 07:30:49
【问题描述】:
我正在开发 Windows 服务,生成报告。该报告有一个模板。这个模板是在一个 excel 文件中准备的。该文件被复制到输出文件夹。
在开发过程中,我像控制台应用程序一样启动了该服务,并且访问该文件没有问题。
然后我准备了一个服务安装程序。该服务安装在Local System 帐户下。所以这个excel模板文件被标记为content,并与可执行文件一起复制到安装目录。
但是当服务启动时,excel 似乎无法访问该文件。该服务安装到c:\Program Files (x86)\Our Company\Service Name\。目标操作系统是 Windows Server 2008。在测试时我使用的是 Windows 7 并遇到了同样的问题。
我使用以下代码访问excel。
using Excel = Microsoft.Office.Interop.Excel;
//...
Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
//the following line throws an exception
Excel.Workbook xlWorkBook = xlApp.Workbooks.Open(@"path");
我还尝试将 excel 模板文件复制到某个临时目录(服务有权在其中写入 - 已测试)并尝试从那里打开它,但没有成功(虽然此变体在控制台应用程序)。
错误信息是:
Microsoft Office Excel 无法访问文件 /path/。 有几个可能的原因:
1. The file name or path does not exist. 2. The file is being used by another program. 3. The workbook you are trying to save has the same name as a currently open workbook.
如何让windows服务访问这个excel模板文件?还是有其他选择?
【问题讨论】:
-
如果您让服务使用管理员帐户(例如您自己的帐户)而不是本地系统,它可以工作吗?
-
@ShadowWizard 让我试试..
-
@ShadowWizard 我在 mmc 服务控制台中将其更改为在我的帐户下运行。没有任何改变。
-
嗯.. 所以这不是权限问题。奇怪!
-
@ShadowWizard 在 mmc 控制台中更改服务帐户时我可能会出错吗?
标签: c# excel windows-services interop