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

问题描述 投票:0回答:5

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

此文本粗体 - 此文本正常

我知道我可以为单元格提供单一样式,但这不会有帮助,而且我无论如何也看不到为单元格提供一些预先格式化的富文本。

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

有没有一种方法可以做到这一点,我在 NPOI 中错过了?

c# npoi cell-formatting
5个回答
31
投票

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

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

31
投票

你可以试试这个:

        var font = reportWorkbook.CreateFont();
        font.FontHeightInPoints = 11;
        font.FontName = "Calibri";
        font.IsBold = true; 

        var cell = headerRow.CreateCell(0);
        cell.SetCellValue("Test Bold");
        cell.CellStyle = reportWorkbook.CreateCellStyle();
        cell.CellStyle.SetFont(font);

7
投票

似乎 Ernie Banzon 的答案不再完全按照描述的方式工作,可能是由于名称空间更改(或者实际上我正在使用 HSSF 名称空间?)

// usings
using NPOI.HSSF.UserModel;

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

2
投票

使用此选项

 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,
    }**

-1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.