我的程序在循环中生成一个Excel并通过电子邮件发送它。在每个循环迭代中,它都应该覆盖Excel,但是旧的Excel进程仍使用Excel,这就是为什么我遇到System.IO.IOException异常的原因。
这里是过程:
以下是代码:
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
答案 0 :(得分:0)
您应该考虑不为此使用互操作;有很多c#库可以直接生成xlsx,而无需安装excel。 xlsx只是一个经过压缩和重命名的xml文件,因此无需其他软件即可很好地工作。就个人而言,过去我使用过EPPlus,但在nuget上有很多选择。通过删除excel interop,可以解决问题,并减少程序的安装要求。用户可以完全相同地安装excel,但不会使用。他们还可以使用免费的Excel查看器,而无需花钱去办公