25

我正在使用 NPOI 从 Asp.Net MVC 应用程序输出 excel,并且与纯文本一起工作得很好,但现在被要求添加格式并且遇到问题,我需要一个带有粗体文本的单元格,然后是非粗体文本. 例如

此文字粗体- 此文字正常

我知道我可以给一个单元格一个单一的样式,但这无济于事,而且我无论如何也看不到给一个单元格一些预先格式化的富文本。

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

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

4

5 回答 5

27

你可以试试这个:

        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);
于 2011-08-25T21:29:42.247 回答
26

Fortunately, you able to do that... Look at this code:

Font f1=wb.CreateFont();
f1.Color=HSSFColor.RED.index;
ws.GetRow(1).GetCell(0).RichStringCellValue.ApplyFont(1, 5, f1);
于 2011-08-02T11:51:19.470 回答
6

似乎 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;
于 2012-06-14T16:56:07.343 回答
2

使用此选项

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

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

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

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

**public enum FontBoldWeight
    {
              None = 0,
              Normal = 400,
              Bold = 700,
    }**
于 2016-10-12T15:45:51.897 回答
0

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

于 2011-07-12T13:45:11.920 回答