我有一个 .NET Windows 服务,它调用 Excel 2013 COM API 以在 PDF 上导出 Excel 文档,我已尝试使用在两个不同域帐户下运行的 Windows 服务来执行此代码,这两个帐户都是运行代码的计算机上的本地管理员。在我的个人帐户下(我也用该帐户登录到机器),代码按预期执行。在未登录计算机的服务帐户(活动目录帐户)下,Excel 文档已打开,但导出逻辑永远不会返回,并且当我停止服务时,该服务打开的 Excel 实例仍保持打开状态。
这是我正在使用的代码:
object paramMissing = Type.Missing;
XlFixedFormatType paramExportFormat = XlFixedFormatType.xlTypePDF;
XlFixedFormatQuality paramExportQuality = XlFixedFormatQuality.xlQualityStandard;
bool paramOpenAfterPublish = false;
bool paramIncludeDocProps = true;
bool paramIgnorePrintAreas = false;
object paramFromPage = Type.Missing;
object paramToPage = Type.Missing;
Workbook excelWorkBook = null;
try
{
// Open the source workbook.
excelWorkBook = excelApplication.Workbooks.Open(file,
paramMissing, paramMissing, paramMissing, paramMissing,
paramMissing, paramMissing, paramMissing, paramMissing,
paramMissing, paramMissing, paramMissing, paramMissing,
paramMissing, paramMissing);
// Save it in the target format.
if (excelWorkBook != null)
excelWorkBook.ExportAsFixedFormat(paramExportFormat,
Directory.PdfDirectory + directoryName + @"\"+ Path.GetFileName(file).Replace(".xlsx", ".pdf"), paramExportQuality,
paramIncludeDocProps, paramIgnorePrintAreas, paramFromPage,
paramToPage, paramOpenAfterPublish,
paramMissing);
}
catch (Exception)
{
throw;
}
finally
{
// Close the workbook object.
if (excelWorkBook != null)
{
excelWorkBook.Close(false, paramMissing, paramMissing);
excelWorkBook = null;
}
}