1、安装引用DotNetCore.NPOI
1)使用Nuget界面管理器
搜索"DotNetCore.NPOI"
,在列表中找到它,点击"安装"
相关文档:VS(Visual Studio)中Nuget的使用
2)使用Package Manager命令安装
PM> Install-Package DotNetCore.NPOI
3)使用.NET CLI命令安装
> dotnet add TodoApi.csproj package DotNetCore.NPOI
2、使用NPOI添加批注的示例代码
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet("Sheet1");
HSSFRow row = (HSSFRow)sheet.CreateRow(0);
HSSFCell cell = (HSSFCell)row.CreateCell(0);
cell.SetCellValue("Cell1");
// 创建绘图主控制器(用于包括单元格注释在内的所有形状的顶级容器)
IDrawing patriarch = (HSSFPatriarch)sheet.CreateDrawingPatriarch();
// 客户端锚定定义工作表中注释的大小和位置
//(int dx1, int dy1, int dx2, int dy2, short col1, int row1, short col2, int row2)
//前四个参数是坐标点,后四个参数是编辑和显示批注时的大小.
IComment comment = patriarch.CreateCellComment(new HSSFClientAnchor(0, 0, 0, 0, 2, 1, 4, 4));
// 设置批注作者
comment.Author = "Author";
// 设置批注内容
comment.String = new HSSFRichTextString($"{comment.Author}:{Environment.NewLine}A comment");
// 让作者像Excel一样在顶部以粗体显示
// 当鼠标停留在已注释的单元格上时,作者将显示在状态栏中
IFont font = workbook.CreateFont();
font.Boldweight = (short)FontBoldWeight.Bold;
comment.String.ApplyFont(0, comment.Author.Length, font);
// 设置批注显示
comment.Visible = true;
// 为单元格分配注释
cell.CellComment = comment;
using (MemoryStream exportData = new MemoryStream())
{
workbook.Write(exportData);
}
3、完整示例代码
using System;
using System.Text;
using System.IO;
using NPOI.HSSF.UserModel;
using NPOI.HSSF.Util;
using NPOI.HPSF;
using NPOI.POIFS.FileSystem;
using NPOI.SS.UserModel;
namespace SetCellCommentInXls
{
class Program
{
static HSSFWorkbook hssfworkbook;
static void Main(string[] args)
{
InitializeWorkbook();
ISheet sheet = hssfworkbook.CreateSheet("ICell comments in POI HSSF");
//创建绘图族长。这是所有形状(包括单元格注释)的顶级容器。
IDrawing patr = (HSSFPatriarch)sheet.CreateDrawingPatriarch();
//在第3行创建一个单元格
ICell cell1 = sheet.CreateRow(3).CreateCell(1);
cell1.SetCellValue(new HSSFRichTextString("Hello, World"));
//anchor定义工作表中注释的大小和位置
IComment comment1 = patr.CreateCellComment(new HSSFClientAnchor(0, 0, 0, 0, 4, 2, 6, 5));
// 在注释中设置文本
comment1.String = (new HSSFRichTextString("We can set comments in POI"));
//设置评论作者。
//当您将鼠标移到已注释的单元格上时,您可以在状态栏中看到它
comment1.Author = ("Apache Software Foundation");
// 向单元格分配注释的第一种方法是通过HSSFCell。SetCellComment方法
cell1.CellComment = (comment1);
//在第6行中创建另一个单元格
ICell cell2 = sheet.CreateRow(6).CreateCell(1);
cell2.SetCellValue(36.6);
HSSFComment comment2 = (HSSFComment)patr.CreateCellComment(new HSSFClientAnchor(0, 0, 0, 0, 4, 8, 6, 11));
//修改评论的背景颜色
comment2.SetFillColor(204, 236, 255);
HSSFRichTextString str = new HSSFRichTextString("Normal body temperature");
//对注释中的文本应用自定义字体
IFont font = hssfworkbook.CreateFont();
font.FontName = ("Arial");
font.FontHeightInPoints = 10;
font.IsBold = true;
font.Color = HSSFColor.Red.Index;
str.ApplyFont(font);
comment2.String = str;
comment2.Visible = true; //默认情况下注释是隐藏的。这个总是可见的。
comment2.Author = "Bill Gates";
/ * *
*为单元格分配注释的第二种方法是隐式指定其行和列。
*注意,可以设置一个不存在的单元格的行和列。
它是有效的,commnet是可见的。
* /
comment2.Row = 6;
comment2.Column = 1;
WriteToFile();
}
static void WriteToFile()
{
//将工作簿的流数据写入根目录
FileStream file = new FileStream(@"test.xls", FileMode.Create);
hssfworkbook.Write(file);
file.Close();
}
static void InitializeWorkbook()
{
hssfworkbook = new HSSFWorkbook();
//创建一个DocumentSummaryInformation条目
DocumentSummaryInformation dsi = PropertySetFactory.CreateDocumentSummaryInformation();
dsi.Company = "NPOI Team";
hssfworkbook.DocumentSummaryInformation = dsi;
//创建一个汇总信息条目
SummaryInformation si = PropertySetFactory.CreateSummaryInformation();
si.Subject = "NPOI SDK Example";
hssfworkbook.SummaryInformation = si;
}
}
}