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
網路上看到的資料: