如何在C#中使用NPOI Excel添加单元格注释?

我想在C#中使用NPOI Excel创建单元格注释.我没有找到任何明确的文件.我自己写了一些东西,如下.

NPOI.HSSF.Record.NoteRecord nr = new NPOI.HSSF.Record.NoteRecord();
nr.Author = "Some Author";
NPOI.HSSF.Record.TextObjectRecord tor = new NPOI.HSSF.Record.TextObjectRecord();
tor.Str = new HSSFRichTextString("something");

HSSFComment cm = new HSSFComment(nr, tor);
cm.Visible = true;

sheet.GetRow(i).Cells[k + 8].CellComment = cm;   

该代码无法正常工作.我在生成的excel文件中看不到对该单元格的任何评论.是否有人知道如何在特定单元格中添加评论?

解决方法:

您需要使用绘图祖父来创建单元格注释.然后,您可以定义您的作者和文本.您还可以应用一些字体自定义.

请尝试此代码,我评论了不同的步骤:

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");

// Create the drawing patriarch (top level container for all shapes including cell comments)
IDrawing patriarch = (HSSFPatriarch)sheet.CreateDrawingPatriarch();

// Client anchor defines size and position of the comment in the worksheet
IComment comment = patriarch.CreateCellComment(new HSSFClientAnchor(0, 0, 0, 0, 2, 1, 4, 4));

// Set comment author
comment.Author = "Author";

// Set text in the comment
comment.String = new HSSFRichTextString($"{comment.Author}:{Environment.NewLine}A comment");

// If you want the author displayed in bold on top like in Excel
// The author will be displayed in the status bar when on mouse over the commented cell
IFont font = workbook.CreateFont();
font.Boldweight = (short)FontBoldWeight.Bold;
comment.String.ApplyFont(0, comment.Author.Length, font);

// Set comment visible
comment.Visible = true;

// Assign comment to a cell
cell.CellComment = comment;

using (MemoryStream exportData = new MemoryStream())
{
    workbook.Write(exportData);
    Response.ContentEncoding = Encoding.UTF8;
    Response.Charset = Encoding.UTF8.EncodingName;
    Response.ContentType = "application/vnd.ms-excel";
    Response.AddHeader("content-disposition", $"attachment; filename=test.xls");
    Response.Clear();
    Response.BinaryWrite(exportData.GetBuffer());
    Response.End();
}

参考文献:

> NPOI HSSF Examples – Cell Comments

上一篇:如何在Java中计算注释行(单行和多行)?


下一篇:php-从JSON数据中删除注释