使用EPPLUS操控Excel

  • 22356
  • 0
  • 2020-12-26

C#如何操控Excel

網路上一大堆都是NPOI,但是用過之後個人不太喜歡

就找找看其他的套件,就找到了EPPLUS

用過之後還滿喜歡的,就在這裡記錄一下如何使用

作業環境:VS2017 專業版、套件版本4.1.1

1.如何產生Excel檔案

//檔案名稱
var fileName = "ExampleExcel" + DateTime.Now.ToString("yyyy-MM-dd--hh-mm-ss") + ".xlsx";
var file = new FileInfo(fileName);
using (var excel = new ExcelPackage(file))
{
   //建立頁籤
   excel.Workbook.Worksheets.Add("Sales list - " + DateTime.Now.ToShortDateString());
   //儲存Excel
   Byte[] bin = excel.GetAsByteArray();
   File.WriteAllBytes(@"C:\Users\pig\Desktop\專案\ASP.NET\SampleCode\SampleCode\File\"+fileName, bin);
}

註:產生新的Excel後,還要在手動加入一個頁籤,才可以正常運作,不然會報錯

2.讀取Excel檔案

//取得excel檔案
FileInfo excel_file = new FileInfo(Server.MapPath("~") + @"DocTemplate\測試.xlsx");
using (ExcelPackage excel = new ExcelPackage(excel_file))
{
  ...dosomething
}

3.儲存格操作

    首先要先指定要哪一個頁籤(sheet)

//指定excel哪一個頁籤
ExcelWorksheet sheet1 = excel.Workbook.Worksheets[1];

    3-1塞值到某一格

//塞資料到某一格
sheet1.Cells[1, 1].Value = "測試";
//塞資料到多格,範圍A1~C2
sheet1.Cells[1, 1,2,3].Value = "測試";
//數字看起不好讀,也可以這樣寫
sheet1.Cells["A1:J3"].Value = "測試";

    3-2合併儲存格

//合併儲存格
sheet1.Cells[1, 1, 2, 3].Merge = true;

     3-4塞公式

sheet1.Cells[9 + i, 9].Formula = "G" + (9 + i).ToString() + "*" + "H" + (9 + i).ToString();

    3-5樣式設定

//設定文字水平對齊,此範例設定水平置中...還有其他屬性可以設定
sheet1.Cells[1, 1, 2, 3].Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
//設定文字垂直對齊,此範垂直靠上...還有其他屬性可以設定
sheet1.Cells["A1:J10"].Style.VerticalAlignment = ExcelVerticalAlignment.Top;
//字型
sheet1.Cells[1, 1, 2, 3].Style.Font.Name = "標楷體";
//文字大小
sheet1.Cells[1, 1, 2, 3].Style.Font.Size = 16;

註:要 using OfficeOpenXml.Style

   3-6表格上色

//一定要加這行..不然會報錯
sheet1.Cells[1, 1, 2, 3].Style.Fill.PatternType = ExcelFillStyle.Solid;
//上色
sheet1.Cells[1, 1, 2, 3].Style.Fill.BackgroundColor.SetColor(Color.Turquoise);

註:要 using System.Drawing

    3-7表格加入框線

//ExcelBorderStyle還有其他框線樣式
//下框線
sheet1.Cells[1, 1, 2, 3].Style.Border.Bottom.Style = ExcelBorderStyle.DashDot;
//上框線
sheet1.Cells[1, 1, 2, 3].Style.Border.Top.Style = ExcelBorderStyle.DashDot;
//右框線
sheet1.Cells[1, 1, 2, 3].Style.Border.Right.Style = ExcelBorderStyle.DashDot;
//左框線
sheet1.Cells[1, 1, 2, 3].Style.Border.Left.Style = ExcelBorderStyle.DashDot;

   3-8設定表格高度

        這裡指定Row而不是使用cell取某段範圍

 sheet1.Row(1).Height = 200;

   3-9表格資料格式

        通常如果是數字欄位,匯出之後有特殊需求,比如說要小數點、或是加入金額要三位一撇,可以使用Style.Numberformat.Formt屬性設定

sheet1.Cells[1, 1, 2, 3].Style.Numberformat.Format = "0.0";

註:更多設定請參考   https://stackoverflow.com/questions/40209636/epplus-number-format

   3-10文字斷行

         要設定WrapText屬性,斷行的地方加入\n符號即可

sheet1.Cells[1, 1, 5, 10].Style.WrapText = true;
sheet1.Cells[1, 1,5, 10].Value = "1.以上報價未包含:(1)社區裝修施工保證金、(2)社區清潔費用與施工期間水電費用、\n(3)室內裝修施工許可證聲請費用、(4)工程竣工細部清潔、(5)所有政府相關費用";

        要注意的是,要記得根據自己的文字內容設定行高,或是合併儲存格,不然會看不到斷行後的文字

    3-11加入註解

sheet1.Cells["A11"].AddComment("測試", "測試");

           如果插入註解的欄位是合併欄位,打開excel會跳出錯誤訊息,但是不影響觀看,如下圖

           請按下是

          按下關閉,就可以正常運作看到資料了

註:這套件有點比較特別,起始值是從1開始而不是0

網路上看到的資料:

http://zeeshanumardotnet.blogspot.tw/search/label/EPPlus

http://blog.darkthread.net/post-2012-05-12-epplus.aspx