将数据导出到excel时,应用程序停止

我有一个代码,显示从Access数据库中的表,我的WinForm我有一个选项导出到Excel,一旦用户点击它需要一些时间来复制所有行到Excel,如果用户尝试closuresexcel之前,所有单元格传输到工作表应用程序将停止并引发错误System.Runtime.InteropServices.COMException:'exception从HRESULT:0x800AC472'

这里是我的Windows窗体中的“导出到Excel”button的代码

private void Export_btn_Click(object sender, EventArgs e) { Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Add(Type.Missing); Microsoft.Office.Interop.Excel._Worksheet worksheet = null; app.Visible = true; worksheet = workbook.Sheets["Sheet1"]; worksheet = workbook.ActiveSheet; for (int i = 1; i < fviAoi_tbl.Columns.Count + 1; i++) { worksheet.Cells[1, i] = fviAoi_tbl.Columns[i - 1].HeaderText; } for (int i = 0; i < fviAoi_tbl.Rows.Count - 1; i++) { for (int j = 0; j < fviAoi_tbl.Columns.Count; j++) { if (fviAoi_tbl.Rows[i].Cells[j].Value != null) { worksheet.Cells[i + 2, j + 1] = fviAoi_tbl.Rows[i].Cells[j].Value.ToString(); } else { worksheet.Cells[i + 2, j + 1] = ""; } } } } 

任何想法,为什么发生这种情况,或者我怎样才能让我的应用程序忽略这个错误,并继续运行。

围绕用try … catch发出exception的代码行

https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/exceptions/

一般来说, Null可能不是你想象的那样。 空不是0也不是空string。 Null是缺乏数据。 (“”)和(null)之间的区别是什么?

因此,C#和.NET可能会在这里抛出一个错误:

if (fviAoi_tbl.Rows[i].Cells[j].Value != null)因为它不知道如何比较某些Excel单元格与Null ,它应该回答什么。 将代码更改为:

if (fviAoi_tbl.Rows[i].Cells[j].Value != ""或类似的东西。