ClosedXML.Report 實作 Excel 報表記錄

ClosedXML, Report, C#

引言

ClosedXML.Report 為 ClosedXML 的延伸套件。用來製作套用報表很方便。唯有已知的二個問題:

一) 說明文件寫得不好。

二) 有版本匹配問題。其為基底的 ClosedXML 最新版的可能不能匹配而出錯。 例如: ClosedXML.Report.v0.2.6 版與 ClosedXML.v0.97.0 版有匹配,但與較新的 ClosedXML.v0.102.0 不匹配。

參考文件

試用紀錄

範例:套入一份主檔與明細清單數據。

以下是結果畫面。上半部是主檔欄位直接用名稱對應套入,明細清單要透過 Excel 公式名稱 來對應。

下面是設定 Excel 樣板檔畫面。主檔欄位用 {{欄位名稱}}』就能對應;但明細清單需設定 Excel公式 的【定義名稱】才能對應生效。之後可在【公式\名稱管理員】查看、編輯、刪除。

Excel 設定畫面
加入【公式名稱】
查看【公式名稱】

關鍵程式碼

using ClosedXML.Excel;
using ClosedXML.Report;

/// 使用 Excel 樣板檔生成報表
public MemoryStream ExportExcelRpt(List<QryDataListResult> dataList)
{
  var template = new XLTemplate(@"Template/ExcelTpl01.xlsx"); //<--- 載入樣本檔

  //# 模擬取得主檔資料	
  Customer cust = new Customer
  {
    Company = "亞洲志遠科技",
    ...
    Orders = new List<Order>() //<--- 明細清單欄位名稱需與Excel『公式名稱』相呼應才能套入生效。
  };

  //# 帶入明細資料
  foreach(var c in dataList)
  {
    cust.Orders.Add(new Order { 
       SaleDate = c.SaleDate,
       ...
    });
  }

  template.AddVariable(cust); //<--- 把數據(主檔與明細清單)套入報表
  template.Generate();

  // return
  var ms = new MemoryStream();
  template.SaveAs(ms);
  return ms;
}

(EOF)

Last updated