上午,
我正在编写简单的Windows服务,它将从给定位置获取excel文件,生成xml文件并将excel移动到另一个文件夹。 我正在使用:
Excel = Microsoft.Office.Interop.Excel
我的代码如下所示:
Excel.Application xlApp = null;
Excel.Workbook xlWorkBook = null;
Excel.Worksheet xlWorkSheet = null;
try
{
xlApp = new Excel.Application();
xlWorkBook = xlApp.Workbooks.Open(file);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item("Części");
//doing something with xml and excel
xlApp.DisplayAlerts = false;
xlWorkBook.Close();
xlApp.Quit();
} catch (Exception e) {
this.writeErrorLog(e);
} finally {
// Close the Excel process
if (null != xlWorkSheet)
Marshal.ReleaseComObject(xlWorkSheet);
if (null != xlWorkBook)
Marshal.ReleaseComObject(xlWorkBook);
Marshal.ReleaseComObject(xlApp);
GC.Collect();
}
我的问题是,当我将它作为普通程序运行时,它可以正常运行并完成我需要的一切。但是当我创建服务并安装它时,每次我将excel文件上传到此文件夹时都会创建例外。例外情况说程序无法访问我的excel文件。
System.Runtime.InteropServices.COMException
我已查看this主题,但它对我没有帮助。任何人都可以帮我解决这个问题吗?
编辑:顺便说一下。我正在使用this教程来创建服务。
EDITv2:我采用文件路径的方式:
string sc_path = @"C:\Projekty\AAPLXML\AppFolders\upload";
string tg_path = @"C:\Projekty\AAPLXML\AppFolders\processed";
if (System.IO.Directory.Exists(sc_path) && System.IO.Directory.Exists(tg_path))
{
List<string> files = System.IO.Directory.GetFiles(sc_path).ToList();
if (files.Count == 0) return;
files.ForEach(f => new XmlGenerator(f).Start());
}