NPOI 创建包含粗体和非粗体文本的单元格

本文关键字:文本 单元格 创建 包含粗 NPOI | 更新日期: 2023-09-27 17:55:48

我正在使用NPOI从MVC应用程序输出excel Asp.Net 并且可以很好地处理纯文本,但现在已要求添加格式,并且遇到了问题,我需要有一个带有粗体文本后跟非粗体文本的单元格。

例如

此文本粗体 - 此文本正常

我知道我可以给一个单元格

一个单一的样式,但这无济于事,无论如何我都看不到给一个单元格一些预先格式化的富文本。

我能想到的唯一可能的解决方案是分别创建两个单元格并将它们合并在一起,但这是否意味着格式会丢失?

有没有办法做到这一点,我在NPOI中错过了?

NPOI 创建包含粗体和非粗体文本的单元格

幸运的是,你能够做到这一点...看看这个代码:

Font f1=wb.CreateFont();
f1.Color=HSSFColor.RED.index;
ws.GetRow(1).GetCell(0).RichStringCellValue.ApplyFont(1, 5, f1);

你可以试试这个:

        var font = reportWorkbook.CreateFont();
        font.FontHeightInPoints = 11;
        font.FontName = "Calibri";
        font.Boldweight = (short)NPOI.SS.UserModel.FontBoldWeight.BOLD; 
        var cell = headerRow.CreateCell(0);
        cell.SetCellValue("Test Bold");
        cell.CellStyle = reportWorkbook.CreateCellStyle();
        cell.CellStyle.SetFont(font);

似乎厄尼·班松的答案不再完全按照描述工作,可能是由于命名空间更改(或者实际上我正在使用 HSSF 命名空间?

// usings
using NPOI.HSSF.UserModel;
// IWorkbook doc
IFont font = doc.CreateFont();
font.FontHeightInPoints = 11;
font.FontName = "Arial";
font.Boldweight = (short)FontBoldWeight.BOLD;

使用此选项

 font.Boldweight = (short)700;//FontBoldWeight.Bold;

实际语法应如下所示。但是这两种语法有时都不起作用

font.Boldweight = FontBoldWeight.Bold ;  
Or 
font.Boldweight = (short)FontBoldWeight.Bold; 

FontBoldWeight 是枚举类型,在类型转换后有时可能无法正常工作。作为解决方法,如果您键入 caste 或直接使用枚举的实际短值,它可以工作。以下是FontBoldWeight的声明。它会让事情变得清晰。

**public enum FontBoldWeight
    {
              None = 0,
              Normal = 400,
              Bold = 700,
    }**

经过相当多的调查,您似乎无法在 NPOI 内部执行此操作,因为它没有提供必要的功能来允许您像我尝试的那样在单元格内的特定文本上设置格式。