首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 通用導出類:DataSet 轉 Excel/Word 多種方案整合

     編輯:關於C語言

項目實戰中整理的通用導出類,支援 DataSet 導出為 Excel、Word,提供三種技術路線:OWC 組件、HTML 表格流、COM 自動化(已棄用),滿足不同環境需求。

核心類結構

public class ExportFiles
{
    // 1. OWC Spreadsheet 導出 Excel(需安裝 OWC)
    public void DataSetToExcel(DataSet ds, string user, string title, string filePath) { ... }

    // 2. HTML 表格流導出 Excel(無依賴,推薦 Web 端)
    public void DataSetToExcel(DataSet ds, string fileName) { ... }
    public void DataSetToExcel(DataSet ds, string fileName, string title) { ... }

    // 3. HTML 表格流導出 Word(無依賴)
    public void DataSetToWord(DataSet ds, string fileName) { ... }
    public void DataSetToWord(DataSet ds, string fileName, string title) { ... }

    // 4. COM 自動化導出 Excel/Word(已屏蔽,速度慢、權限麻煩)
    // ...
}

三種方案對比

方案優點缺點適用場景
OWC 組件生成真實 .xls,支援樣式、合併儲存格需服務器安裝 OWC,權限配置繁瑣內網、可控環境
HTML 表格流無依賴、跨平台、代碼簡單本質是 .xls/.doc 格式的 HTML,部分功能受限Web 端、快速導出
COM 自動化功能最全,可操作圖表、樞紐分析速度極慢、需 Office 授權、服務器不穩定極少數複雜報表

關鍵代碼片段(HTML 流導出 Excel)

public void DataSetToExcel(DataSet ds, string fileName, string title)
{
    HttpResponse resp = HttpContext.Current.Response;
    resp.Clear();
    resp.ContentEncoding = Encoding.UTF8;
    resp.AppendHeader("Content-Disposition", "attachment;filename=" + fileName + ".xls");
    resp.ContentType = "application/vnd.ms-excel";

    StringBuilder sb = new StringBuilder();
    sb.Append("");
    // 標題行
    sb.Append("");
    // 表頭
    sb.Append("");
    foreach (DataColumn col in dt.Columns) sb.Append("");
    sb.Append("");
    // 數據行
    foreach (DataRow row in dt.Rows)
    {
        sb.Append("");
        foreach (object val in row.ItemArray) sb.Append("");
        sb.Append("");
    }
    sb.Append("
" + title + "
" + col.Caption + "
" + val + "
"); resp.Write(sb.ToString()); resp.End(); }

使用建議

  • Web 端優先使用 HTML 流方案,零依賴、易維護。
  • 需真實 .xlsx 格式時,建議引入 EPPlus 或 NPOI 庫替代 OWC/COM。
  • 導出前做數據量檢查,超大數據集建議分頁或後台異步生成提供下載鏈接。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved