问题描述
我有一个程序可以从不同的文件类型进行所有类型的转换。当程序在个人计算机甚至 Windows 服务器上手动执行时,将文件从 Excel 转换为 HTM 的功能可以正常运行。
当程序被安排为 Windows 服务器上的任务时,会发生此问题。在 Excel.Workbooks.Close() 中抛出错误 0x800AC472。
我的假设是,这是服务器上的许可问题,它会引发 Office 激活对话框,导致程序无法关闭。
我想用与服务器端自动化兼容的包/库替换使用 Office Interop,以进行此类转换。有哪些库支持此要求?
我目前在 Visual Basic 控制台应用程序中使用 Office Interops 处理转换。
Private Shared objXL As Excel.Application
GC.Collect()
Dim objWB As Excel.Workbook
Try
objWB = objXL.Workbooks.Open(fileSource)
objWB.SaveAs(fileDestination,Excel.XlFileFormat.xlHtml,False,False)
objWB.Close(nothing,nothing,nothing)
Catch ex As Exception
Throw ex
End Try
objXL.Workbooks.Close()
System.Runtime.InteropServices.Marshal.ReleaseComObject(objWB)
objWB = nothing
GC.Collect()
解决方法
创建以下目录修复了以下问题:在服务器上运行办公自动化会创建对话框,因此无人值守执行失败,因为 Office 应用程序希望与真实用户交互并因此关闭这些对话框。
C:\Windows\SysWOW64\config\systemprofile\Desktop
C:\Windows\System32\config\systemprofile\Desktop
我的操作系统 Windows Server 2012 R2 Standard