2022年4月2日 星期六

[研究][ASP.NET]ClosedXML元件常用屬性或方法

[研究][ASP.NET]ClosedXML元件常用屬性或方法

2022-04-02
2023-05-01更新

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C#

// 建立工作簿

IXLWorkbook wb = new XLWorkbook();

// 建立工作表

IXLWorksheet sheet = wb.Worksheets.Add("Employee");

// G欄位寬度40

sheet.Column("G").Width = 40;

// 第一個欄位寬度40

sheet.Column(1).Width = 40;

// 合併儲存格

sheet.Range(1, 1, 1, headerList.Count()).Merge();

sheet.Cell(1, 1).Value = "Employee Report";

// 樣式-背景色

sheet.Cell(1, 1).Style.Fill.SetBackgroundColor(XLColor.AppleGreen);

// 字體大小

sheet.Cell(1, 1).Style.Font.SetFontSize(12);

// 粗體

sheet.Cell(1, 1).Style.Font.SetBold();

// 水平垂直對齊方式

sheet.Cell(1, 1).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;

sheet.Cell(1, 1).Style.Alignment.Vertical = XLAlignmentVerticalValues.Center;

// 動態範圍水平向上對齊方式, rowIndex 是資料橫列數,假設欄位使用到 S

string endCell = "S" + rowIndex.ToString();

ws.Ranges("A1:" + endCell).Style.Alignment.Vertical = XLAlignmentVerticalValues.Top; // 水平向上對齊


// 寫入 / ClosedXML 的 row 或 cell 都是從 1 開始

sheet.Cell(2, 3).Value = "test";

// 上框線

sheet.Cell(2, 3).Style.Border.SetTopBorder(XLBorderStyleValues.Double);

// 自適應欄寬,這要在資料都已經寫入欄位中,存檔前再做

sheet.Columns().AdjustToContents();

ws.Column(columnIndex).Width -= 1;  // 自適應欄寬


using (MemoryStream ms = new MemoryStream())

{

    // 將檔案存入記憶流

    wb.SaveAs(ms);

    // 記憶流轉換成 byte[]

    var content = ms.ToArray();

    return File(content, contentType, fileName);

}

ws.Range("A1:D4").Style.Border.TopBorder = XLBorderStyleValues.Thin;

ws.Range("A1:D4").Style.Border.InsideBorder = XLBorderStyleValues.Dotted;

ws.Range("A1:D4").Style.Border.OutsideBorder = XLBorderStyleValues.Thin;

ws.Range("A1:D4").Style.Border.LeftBorder = XLBorderStyleValues.Thin;

ws.Range("A1:D4").Style.Border.RightBorder = XLBorderStyleValues.Thin;

ws.Range("A1:D4").Style.Border.TopBorder = XLBorderStyleValues.Thin;



ws.Tables.FirstOrDefault().SetShowAutoFilter(false);

IXLRange contents = ws.Range("A1:A65536");
contents.Style.Alignment.WrapText = true;

//設定區域範圍的  儲存格框線
ws.Ranges("A1:F5").Style.Border.TopBorder = XLBorderStyleValues.Thin;
ws.Ranges("A1:F5").Style.Border.LeftBorder = XLBorderStyleValues.Thin;
ws.Ranges("A1:F5").Style.Border.RightBorder = XLBorderStyleValues.Thin;
ws.Ranges("A1:F5").Style.Border.BottomBorder = XLBorderStyleValues.Thin;

//動態設定區域範圍的  儲存格框線
// rowIndex 是自己去計算出來的列數
string endCell = "S" + rowIndex.ToString();
ws.Ranges("A1:" + endCell).Style.Border.TopBorder = XLBorderStyleValues.Thin;

//設定背景顏色 (底色)
ws.Ranges("A1:A5").Style.Fill.SetBackgroundColor(XLColor.FromHtml("#7AA0CD"));
ws.Ranges("A1:A5").Style.Font.SetFontColor(XLColor.White);
ws.Ranges("A1:A5").Style.Font.SetFontColor(XLColor.White); 

string range = "AA2:AG" + rowIndex.ToString();
ws.Range(range).Style.Fill.BackgroundColor = XLColor.LightYellow;
ws.Range("AH2:AN" + rowIndex.ToString()).Style.Fill.BackgroundColor = XLColor.LightGreen;
ws.Range("AO2:AQ" + rowIndex.ToString()).Style.Fill.BackgroundColor = XLColor.LightBlue;

(完)

相關

[研究][ASP.NET]ClosedXML元件常用屬性或方法http://shaurong.blogspot.com/2022/04/aspnetclosedxml.html

[研究][ASP.NET]使用 ClosedXML 0.95.4 讀取匯入 .xlsx 到資料庫(暫存、不暫存檔)
http://shaurong.blogspot.com/2021/02/aspnet-closedxml-0954-xlsx.html

[研究][ASP.NET]使用 ClosedXML 0.95.4 匯出、寫入 .xlsx(暫存、不暫存檔)
http://shaurong.blogspot.com/2021/02/aspnet-closedxml-0954-xlsx_17.html



1 則留言:

  1. 嗨,我使用sheet.Columns().AdjustToContents(); 出現A generic error occurred in GDI+ 查不出什麼原因造成的

    回覆刪除