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

时间:2011-05-09 09:31:55

标签: c# npoi cell-formatting

我正在使用NPOI从Asp.Net MVC应用程序输出excel并且与纯文本一起工作得非常好但是现在已经被要求添加格式化并且遇到问题我需要有一个带有粗体文本的单个单元格后跟非-粗体。 e.g。

  

此文字粗体 - 此文字正常

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

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

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

5 个答案:

答案 0 :(得分:22)

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

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

答案 1 :(得分:21)

你可以试试这个:

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

答案 2 :(得分: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;

答案 3 :(得分:2)

使用此选项

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

实际语法应如下所示。但这两种语法都不适用

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

FontBoldWeight是类型枚举,在类型转换之后可能无法正常工作。如果您输入种姓或直接使用枚举的实际短值,则可以解决此问题。下面是FontBoldWeight的声明。它会让事情变得清晰。

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

答案 4 :(得分:-1)

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