NPOI创建批注

很多人不怎么用Excel中的批注,所以我特地截了张图,我们先看一下批注的效果图
在这里插入图片描述

批注主要有三个属性需要设置,一个是批注的位置和大小、一个是批注的文本、还有一个是批注的作者,

批注的位置和大小,在Excel中是与单元格密切相关的,NPOI中通过HSSFClientAnchor或者XSSFClientAnchor的实例来表示,它的构造函数比较复杂,有8个参数,它们分别是

参数

说明

dx1

第1个单元格中x轴的偏移量

dy1

第1个单元格中y轴的偏移量

dx2

第2个单元格中x轴的偏移量

dy2

第2个单元格中y轴的偏移量

col1

第1个单元格的列号

row1

第1个单元格的行号

col2

第2个单元格的列号

row2

第2个单元格的行号

例如,如果我们打算让注释显示在B3和E5之间,就应该这么写:

HSSFPatriarchpatr = sheet.CreateDrawingPatriarch();
HSSFCommentcomment1 = patr.CreateComment(new HSSFClientAnchor(0, 0, 0, 0, 1, 2 , 4, 4));
下面我们设置这个批注的内容和作者,这个比较简单:

comment1.String=newHSSFRichTextString(“Hello World”);
comment1.Author=“PushSoft”;
对于批注,你有两种选择,一种是隐藏(默认),一种是显示(即表单一打开就显示该批注),可以通过comment1.Visible属性来控制。

下面是创建了一个批注,在指定单元格的右侧的位置显示,为了避免在创建Excel文件时创建过多的字体对象,所以对于字体样式相同的单元格尽量使用一个对象来设置字体样式

private IComment GetComment(ISheet sheet, IComment comment, int cellnum,object text)
{
    IWorkbook workbook = sheet.Workbook;
    bool exportXlsx = workbook is XSSFWorkbook;
    if (comment == null)
    {
        IDrawing draw = sheet.CreateDrawingPatriarch();
        IClientAnchor clientAnchor = null;
    if (exportXlsx)
    {
        clientAnchor = new XSSFClientAnchor(0, 0, 0, 0, cellnum, 0, cellnum +2, 5);
    }
    else
    {
        clientAnchor = new HSSFClientAnchor(0, 0, 0, 0, cellnum, 0, cellnum + 2, 5);
    }
        comment = draw.CreateCellComment(clientAnchor);
    }
    IRichTextString richText = null;
    if (exportXlsx)
    {
        richText = new XSSFRichTextString(string.Format("{0}", text));
    }
    else
    {
        richText = new HSSFRichTextString(string.Format("{0}", text));
    }
    richText.ApplyFont(GetDefaultFont(workbook, true));// 设置批注中文本的字体
    comment.String = richText;
    comment.Visible = false;
    comment.Author = "Pushsoft";
    return comment;
}
private IFont _defaultFont;
private IFont _defaultBlodFont ;
private IFont GetDefaultFont(IWorkbook workbook, bool blod = false)
{
    IFont font = blod? _defaultBlodFont :_defaultFont;
    if (font == null)
    {
        font = workbook.CreateFont();
        font.FontName = "Tahoma";
        font.FontHeightInPoints = 9;
        if (blod)
        {
            font.Boldweight = (short)FontBoldWeight.Bold;
            _defaultBlodFont = font;
        }
        else
        {
            _defaultFont = font;
        }
    }
    return font;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值