关闭Excel

时间:2016-05-24 09:16:23

标签: c# excel interop comexception

上午,

我正在编写简单的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());
        }

0 个答案:

没有答案