首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

VS2012 從 DataGrid 導出數據到 Excel 時出現錯誤的解決方案

     編輯:程式設計綜合問答

問題背景

在使用 Visual Studio 2012 開發 WinForms 應用程式時,嘗試將 DataGrid 控件的數據導出到 Excel 檔案,編譯器報錯提示「ColumnCount、Rows、Columns 等在 System.Windows.Forms.DataGrid 中不包含」。

錯誤代碼分析

原始代碼嘗試使用 grid1.ColumnCount、grid1.Rows.Count 等屬性,但在 WinForms 中並不存在 DataGrid 這個類別,正確的控件名稱是 DataGridView。

核心區別

  • DataGrid:ASP.NET Web Forms 使用的伺服器控件
  • DataGridView:WinForms 桌面應用使用的控件

解決方案

將代碼中的 DataGrid 替換為 DataGridView,並調整相應的屬性名稱:

  • ColumnCount → Columns.Count
  • Rows.Count 保持不變
  • Columns[i].HeaderText 保持不變
  • Rows[j].Cells[k].Value 保持不變

修正後的關鍵代碼片段

// 寫入標題
for (int i = 0; i < dataGridView1.Columns.Count; i++) {
    if (i > 0) str += "\t";
    str += dataGridView1.Columns[i].HeaderText;
}
sw.WriteLine(str);

// 寫入內容
for (int j = 0; j < dataGridView1.Rows.Count; j++) {
    string tempStr = "";
    for (int k = 0; k < dataGridView1.Columns.Count; k++) {
        if (k > 0) tempStr += "\t";
        tempStr += dataGridView1.Rows[j].Cells[k].Value?.ToString() ?? "";
    }
    sw.WriteLine(tempStr);
}

注意事項

  1. 建議加上空值檢查 ?.ToString() ?? "" 避免 NullReferenceException
  2. 導出大量數據時考慮使用 StringBuilder 提升性能
  3. Excel 真正的 .xls 格式建議使用 NPOI 或 EPPlus 庫
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved