iT邦幫忙

2022 iThome 鐵人賽

DAY 27
0
自我挑戰組

Bug仔的筆記本系列 第 27

使用 ClosedXML 對 Excel 做處理

  • 分享至 

  • xImage
  •  

在 ASP.NET 或是 C# 程式裡,如果你的網站有需要把資料匯出的功能,可以使用 ClosedXML 幫我們操作或是建立 Excel 檔案。而這個套件的核心是使用 Open XML SDK ,所以只支援的格式為.xlsx

安裝

使用 NuGet 來安裝
https://ithelp.ithome.com.tw/upload/images/20221012/20120420QnSsTp64zP.png

https://ithelp.ithome.com.tw/upload/images/20221012/20120420QeESQXmsTm.png

建立一個 Excel

而 Closed Excel 的操作非常的簡單,一個蘿菠一個坑,一個口令一個動作。簡單易懂:

// 建立活頁簿
IXLWorkbook workbook = new XLWorkbook();

// 建立工作表
IXLWorksheet worksheet = workbook.Worksheets.Add("我是工作表的名稱");
worksheet.Cell(1, 2).Value = "第一列第二欄";
worksheet.Cell("A1").Value = "A欄第一列";

// 儲存
workbook.SaveAs(@"d:\test.xlsx");

https://ithelp.ithome.com.tw/upload/images/20221012/20120420JKz4BVorMz.png

迴圈寫入資料

int i = 1;
foreach(var value in arr)
{
    worksheet.Cell(i, 3).Value = value;
    i++;
}

https://ithelp.ithome.com.tw/upload/images/20221012/20120420ChJ52ZX6mg.png

直接讀取現有 Excel 檔案

XLWorkbook workbook = new XLWorkbook(@"d:\test.xlsx");

在 API 回傳 Excel 檔案下載

寫到 memoryStream ,再作下載,不過 xlsx 的 Content-Type 又臭又長。

[HttpGet]
public ActionResult GetFile(string name)
{
    IXLWorkbook workbook = new XLWorkbook();

    IXLWorksheet worksheet = workbook.Worksheets.Add("我是工作表的名稱");
    worksheet.Cell(1, 1).Value = name;

    using (var memoryStream = new MemoryStream())
    {
        workbook.SaveAs(memoryStream);
        return File(memoryStream.ToArray(),
            "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
            "Test.xlsx");
    }
}

上一篇
用 Magick.NET 來實作圖片轉檔
下一篇
訂製你的權限驗證 Authorize Filter
系列文
Bug仔的筆記本30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言