EPPlus设置字体颜⾊、单元格批注(comment)、常⽤样式
param name设置
本⽂是笔记形式,未做排版
⼀.介绍
EPPlus 是⼀款 .NET 平台下操作 Excel 的组件,⽆需依赖 COM ⼗分⽅便,类似于 NPOI, 但它只⽀持操作 Excel,API ⽐较全⽽且使⽤简单。
EPPlus 5.x 及以上已经转换为商业版,需要购买授权,所以我们⼀般可以安装 4.x 的最新版来使⽤。
Install-Package EPPlus -Version 4.5.3.3
⼆.正⽚
1.设置字体颜⾊
var p = new ExcelPackage(new FileInfo("tmp.xlsx"), new FileInfo(options.TemplateFilePath));
//获取 Worksheet
var ws = p.Workbook.Worksheets[0];
//获取单元格
var cell = ws.Cells[rowIndex, columnIndex];
//为单元格设置字体
cell.Style.Font.Color.SetColor(Color.Crimson);
主要是这句 cell.Style.Font.Color.SetColor(Color.Crimson); ,不是直接为 Color 属性赋值,⽽是使⽤ SetColor() ⽅法
2.设置单元格批注
单元格批注,在我们操作 Excel ⽐较实⽤的场景:为单元格值做出错误说明,让⽤户知道这个单元格的值为什么错了,等等。
批注的形势如下:
代码实现:
var p = new ExcelPackage(new FileInfo("tmp.xlsx"), new FileInfo(options.TemplateFilePath));
//获取 Worksheet
var ws = p.Workbook.Worksheets[0];
//获取单元格
var cell = ws.Cells[rowIndex, columnIndex];
var comment = cell.AddComment("错误原因:\r\n", "作者");
comment.Font.Bold = true;
var rt = comment.RichText.Add("内容");
rt.Bold = false;
comment.AutoFit = true;
注意 AddComment() ⽅法的第⼆个参数不能设置为null或空字符串,不然会报异常。
3.常⽤样式设置
var p = new ExcelPackage(new FileInfo("tmp.xlsx"), new FileInfo(options.TemplateFilePath));
//获取 Worksheet
var ws = p.Workbook.Worksheets[0];
//获取单元格
var cell = ws.Cells[rowIndex, columnIndex];
//设置⽔平对齐
cell.Style.HorizontalAlignment= ExcelHorizontalAlignment.Center;
//设置垂直对齐
cell.Style.VerticalAlignment= ExcelVerticalAlignment.Center;
//设置列宽度
ws.Column(columnIndex).Width = 50;
//设置⾏⾼度
ws.Row(rowIndex).Height= 50;
3.C o p y单元格样式
Copy 单元格样式可以⽤在模板导出,⽤于设置数据⾏的样式。
可以在模板设置⼀⾏空⽩⾏,设置好样式,对齐、加粗等,然后⽤代码从这⾏把样式Copy到其他数据⾏。
Copy 样式的核⼼是设置⾏⾼度和单元格 StyleId ,我封装了两个⽅法,可以直接使⽤。
public class ExcelHelper
{
/// <summary>
/// 复制Excel样式
/// </summary>
/// <param name="ws">WorkSheet</param>
/// <param name="copyStyleRowIndex">提供样式的⾏索引(1开始)</param>
/// <param name="startRowIndex">开始设置样式的⾏索引(1开始)</param>
/// <param name="rowCount">需要设置样式的⾏数</param>
public static void CopyStyle(ExcelWorksheet ws, int copyStyleRowIndex, int startRowIndex, int rowCount)
{
var columnCount = ws.Dimension.Columns;
for (var i = startRowIndex; i < startRowIndex + rowCount; i++)
{
ws.Row(i).Height = ws.Row(copyStyleRowIndex).Height;
for (int j = 1; j <= columnCount; j++)
{
ws.Cells[i, j].StyleID = ws.Cells[copyStyleRowIndex, j].StyleID;
}
}
}
/// <summary>
/// 复制Excel样式
/// </summary>
/// <param name="ws">WorkSheet</param>
/// <param name="copyStyleRowIndex">提供样式的⾏索引(1开始)</param>
/
// <param name="startRowIndex">设置样式的⾏开始索引(1开始)</param>
/// <param name="rowCount">需要设置样式的⾏数</param>
/// <param name="startColIndex">需要设置样式的列开始索引(1开始)</param>
/// <param name="colCount">需要设置样式的列数量</param>
public static void CopyStyle(ExcelWorksheet ws, int copyStyleRowIndex, int startRowIndex, int rowCount,int startColIndex,int colCount) {
for (var i = startRowIndex; i < startRowIndex + rowCount; i++)
{
ws.Row(i).Height = ws.Row(copyStyleRowIndex).Height;
for (int j = 1; j <= colCount; j++)
{
ws.Cells[i, j].StyleID = ws.Cells[copyStyleRowIndex, j].StyleID;
}
}
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论