我创建了一个 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 重写整个服务?非常感谢您提前。