我正在开发一个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无法访问文件/路径/。可能有几个原因:
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模板文件?或者有其他替代方案吗?