我有一个函数,它接收一个指向Excel文件的URL,并将其导出为PDF文件:
我正在进行的工作是创建一个Excel文件,然后立即从该文件创建一个pdf文件。
它可以顺利创建Excel文件,并且也可以创建PDF。但是页面会长时间挂起,然后在我的pdf代码中的
如果我试图删除我的Excel文件,那么就会出现一个错误,指出文件正在被另一个进程使用,直到我在任务管理器中结束EXCEL.EXE进程,才能删除Excel文件。
因此,由于某种原因,在完成创建pdf后,我的Excel文件无法关闭。我在代码中做错了什么吗?
public static void ExportFromExcel(string url)
{
// Create COM Objects
Application excelApplication = new Application();
Workbook excelWorkbook =
excelApplication.Workbooks.Open(HttpContext.Current.Server.MapPath(url));
try
{
// Call Excel's native export function
excelWorkbook.ExportAsFixedFormat(
XlFixedFormatType.xlTypePDF,
HttpContext.Current.Server.MapPath(url.Replace(".xlsx", ".pdf")));
}
catch (Exception ex)
{
}
finally
{
// Close the workbook, quit Excel, and clean up regardless of the results
excelWorkbook.Close(); // HANGS AND FAILS HERE
excelApplication.Quit();
excelApplication = null;
excelWorkbook = null;
}
}
我正在进行的工作是创建一个Excel文件,然后立即从该文件创建一个pdf文件。
using (FileStream fs = File.Create(HttpContext.Current.Server.MapPath(filePath)))
{
byte[] data = pck.GetAsByteArray();
fs.Write(data, 0, data.Length);
}
Pdf.ExportFromExcel(filePath);
它可以顺利创建Excel文件,并且也可以创建PDF。但是页面会长时间挂起,然后在我的pdf代码中的
excelWorkbook.Close();
处给我一个错误:
实际上这些文件已经被创建了。但是,如果我进入文件目录,就会发现有一个临时Excel文件(我的Excel文件名前面带有远程过程调用失败。 (HRESULT 为 0x800706BE 的异常)
~$
)。如果我试图删除我的Excel文件,那么就会出现一个错误,指出文件正在被另一个进程使用,直到我在任务管理器中结束EXCEL.EXE进程,才能删除Excel文件。
因此,由于某种原因,在完成创建pdf后,我的Excel文件无法关闭。我在代码中做错了什么吗?