我在循环中运行,几次之后我就可以创建新实例了。
if (this.excelApp == null)
{
this.excelApp = new Application();
}
dll中的错误,我卡住了来自dll的对话框错误消息。在关闭对话框之前,我的代码已冻结,无法继续。如果我用try / catch换行,将无法使用,因为它会弹出对话框。如何杀死该对话框或解决此问题?
答案 0 :(得分:0)
首先,我总是将其发送到后台打开 你可以这样(h / t SO)
this.excelApp.Visible = false;
这将有助于避免出现对话框。
您还可以直接打开文件本身(也可以是H / T SO),也可以隐藏Excel。
var xlApp = new Microsoft.Office.Interop.Excel.Application();
xlWorkBook = xlApp.Workbooks.Open(@"/path", 0, true, 5, "", "", true, XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
......
xlWorkBook.Close();
然后,在每个循环的结尾,我通常将其称为“有时”,因为有时进程会停滞不前。完全公开,我只是从excel中读取和复制,所以我不必担心等待写结论。
private static void KillExcel()
{
foreach (Process process in Process.GetProcessesByName("excel"))
{
if (!process.HasExited)
{
process.Kill();
}
}
}