Skip to content

開始使用 Excely

Max Zheng edited this page Jan 15, 2024 · 30 revisions

安裝

此套件目前為搶鮮版

若您僅使用 CSV 相關功能,請執行以下指令以下載 Excely 本體:

dotnet add package Excely --version 0.1.0-alpha

若您想要使用 Excel 相關功能,請根據您偏好的依賴套件選擇對應的版本:

EPPlus
dotnet add package Excely.LGPL.EPPlus --version 0.1.0-alpha
ClosedXML
dotnet add package Excely.ClosedXML --version 0.1.0-alpha

開始使用

以下以 EPPlus.LGPL 依賴版本,進行 Excel 匯入、匯出的示範。

匯出

以下的範例展示了如何從 List 匯出為 Excel:

// usings
using Excely.Workflows;
using Excely.ClosedXML.Workflows;

// 創建物件列表
var students = new List<Student>()
{
    new Student(id: 0, name: "Test1", birthday: DateTime.Now),
    new Student(id: 1, name: "Test2", birthday: DateTime.Now),
};

// 建立匯出 List<Student> 的 exporter
var exporter = ExcelyExporter.FromClassList<Student>();

// 匯出為 Excel
using var excel = exporter.ToExcel(students);

可以看到我們首先呼叫靜態類別 ExcelyExporter 中的 FromClassList<T> 方法, 來創造一個可以輸入 List<T> 的 exporter。

ExcelyExporter 可以幫助您創建各種輸入版本的 exporter, 例如 FromDictionaryList 可以創建接受字典輸入的 exporter。

FromClassList<T> 有兩個參數可以輸入:

  • options - 此參數讓您可以自定義匯出流程的邏輯,詳細的使用方式請參考(尚未編寫)。
  • shaders - 此參數讓您在匯出後,能使用 shader 來依序調整匯出結果。關於 shader 的用法,請參考(尚未編寫)。

ToExcel 則可以輸入以下參數:

  • sourceData - 匯入資料來源。
  • worksheetName - 匯出時創建的工作表名稱。
  • startCell - 開始匯出的座標(不填入則為最右上角)。

ToExcel 實際上是 ToWorksheet 的包裝,若您已經有想匯出的目標 excel 實例,請考慮改用 ToWorksheet

匯入

以下的範例展示了如何從 worksheet 匯入為 List:

// 接續匯出章節匯出的檔案
var worksheet = excel.Workbook.Worksheets.First();

// 建立接受 worksheet 的 importer
var importer = new XlsxImporter();

// 匯入為 IEnumerable<Student>
var importResult = importer.ToClassList<Student>(worksheet);

與匯出時不同,這裡我們不是呼叫靜態類別來產生 importer,而是直接建立一個特定的 importer 物件, 這是因為匯入來源通常都是由套件依賴版本(如本例中的 Excely.EPPlus.LGPL)提供。

此處的 new XlsxImporter() 建構子可以輸入兩種參數:

  • startCell - 代表開始讀取來源的座標。若不填則從 worksheet 的最左上角開始讀取。
  • endCell - 代表強制結束讀取的座標,只會讀取 startCell 到 endCell 間的內容。若不填則不設限。

ToClassList 則可以輸入來源資料及自定義的轉換邏輯(可選)。

關於 option 參數的詳細使用方式請參考(尚未編寫)。

進階技巧

若您希望了解更多使用 Excely 的方式,請參考(尚未編寫)。

Clone this wiki locally