自动正确退出生成的Excel文件

时间:2018-09-21 06:07:01

标签: c# wpf

我的程序在循环中生成一个Excel并通过电子邮件发送它。在每个循环迭代中,它都应该覆盖Excel,但是旧的Excel进程仍使用Excel,这就是为什么我遇到System.IO.IOException异常的原因。

这里是过程:

enter image description here

以下是代码:

if(File.Exists(PfadXlsx)) File.Delete(PfadXlsx);

        mExcel.Visible = true;
        mExcelWs.SaveAs(PfadXlsx, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookDefault, missing, missing, false, false, false, missing, missing, missing);     // Datei speichern

        mExcelWb.Close(true, missing, missing);
        mExcel.Application.Quit();
        mExcel.Quit();
  

mExcel == Excel.Application mExcelWB == Excel.Workbook   mExcel == Excel.Worksheet丢失== type.missing

1 个答案:

答案 0 :(得分:0)

您应该考虑不为此使用互操作;有很多c#库可以直接生成xlsx,而无需安装excel。 xlsx只是一个经过压缩和重命名的xml文件,因此无需其他软件即可很好地工作。就个人而言,过去我使用过EPPlus,但在nuget上有很多选择。通过删除excel interop,可以解决问题,并减少程序的安装要求。用户可以完全相同地安装excel,但不会使用。他们还可以使用免费的Excel查看器,而无需花钱去办公