簡體   English   中英

將數據導出到Excel時,應用程序停止

[英]Application stop when exporting data to excel

我有一個顯示來自Access數據庫的表的代碼,在我的WinForm上我有一個選項可以將表導出到excel,一旦用戶點擊它需要一些時間將所有行復制到excel,如果用戶試圖關閉excel在所有單元格轉移到工作表之前,應用程序將停止並拋出錯誤System.Runtime.InteropServices.COMException:'來自HRESULT的異常:0x800AC472'

這是我在Windows窗體中的“導出到Excel”按鈕的代碼

        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來圍繞發出異常的代碼行...

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

一般來說, Null可能不是你想象的那樣。 Null不是0也不是空字符串。 Null缺乏數據。 (“”)和(null)之間有什么區別

因此,C#和.NET可能會在這里拋出一個錯誤:

if (fviAoi_tbl.Rows[i].Cells[j].Value != null)因為,它不明白你如何比較一些Excel單元格和Null以及它應該回答什么。 將代碼更改為:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM