• EPPlus 设置字体颜色、单元格批注(comment)、常用样式设置


    本文是笔记形式,未做排版

    一.介绍

    EPPlus 是一款 .NET 平台下操作 Excel 的组件,无需依赖 COM 十分方便,类似于 NPOI, 但它只支持操作 Excel,API 比较全而且使用简单。

    EPPlus 5.x 及以上已经转换为商业版,需要购买授权,所以我们一般可以安装 4.x 的最新版来使用。

    Install-Package EPPlus -Version 4.5.3.3
    

    官方 Wiki https://github.com/JanKallman/EPPlus/wiki 。若遇到使用问题,推荐使用 Google 搜索(搜索关键字使用英文),一般都能找到答案。

    二.正片

    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("错误原因:
    ", "作者");
    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.Copy 单元格样式

    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;
    			}
    		}
    	}
    }
    
    
  • 相关阅读:
    小米手机miui8.5连接电脑
    js数组map方法
    wxui入门
    动画函数封装
    系列属性(offset、scroll、client)
    定时器( setInterval和 setTimeout)
    BOM(浏览器对象模型)
    事件(绑定、解绑、冒泡)
    元素(element)创建
    节点(node)操作
  • 原文地址:https://www.cnblogs.com/stulzq/p/12977701.html
Copyright © 2020-2023  润新知