我正在开发 Windows 服务,生成报告。该报告有一个模板。这个模板是在一个 excel 文件中准备的。该文件被复制到输出文件夹。
在开发过程中,我像控制台应用程序一样启动了该服务,并且访问该文件没有问题。
然后我准备了一个服务安装程序。该服务安装在Local System
帐户下。所以这个excel模板文件被标记为内容并与可执行文件一起复制到安装目录。
但是,当服务启动时,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 模板文件?或者还有其他选择吗?