4

我创建了一个 C# 服务:

- Picks up and opens a local text file
- Opens an Excel-file used as template (saved locally)
- Fills in the data from the text file in the excel file
- Saves the Excel file to a network folder.

该服务使用域帐户运行(我无法从我们的网络管理员授予网络上的本地系统帐户权限......)。当服务尝试打开模板时,我收到拒绝访问错误:

Microsoft Excel cannot access the file 'C:\BloxVacation\Template\BloxTemplate.xlsm'. There are several possible reasons:

• The file name or path does not exist.
• The file is being used by another program.
• The workbook you are trying to save has the same name as a currently open workbook.

该文件确实存在并且路径正确。该文件未被其他用户或程序使用。我尝试打开工作簿(没有打开其他工作簿),而不是保存它。

我使用系统帐户收到了同样的错误。原因是,在使用互操作服务时,系统帐户需要一个桌面文件夹(Windows 7 中的错误:http ://forums.asp.net/t/1585488.aspx )。

C:\Windows\System32\config\systemprofile\Desktop
C:\Windows\SysWOW64\config\systemprofile\Desktop

创建这两个文件,系统帐户的错误就会消失。

我已授予这些文件夹的域用户权限,并且错误也消失了,但是该服务挂在我打开 excel 文件的代码行上。当我使用系统帐户执行完全相同的代码时,代码执行良好(注意:我将文件保存在本地)。

 objXL.Workbooks.Open(BloxVacationService.ExcelTemplateFilePath)

有没有人知道如何解决这个问题而不必用 OpenXML 重写整个服务?非常感谢您提前。

4

1 回答 1

0

如果你已经完成了问题中描述的所有事情,但它仍然不起作用(就像我一样),答案很简单:

在运行服务的机器上设置域用户本地管理员。它解决了这个问题。

于 2013-10-01T13:03:38.160 回答