【问题标题】:NPOI create cell containing bold and non bold textNPOI 创建包含粗体和非粗体文本的单元格
【发布时间】:2011-05-09 09:31:54
【问题描述】:

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

此文字加粗 - 此文字正常

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

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

有没有一种我在 NPOI 中错过的方法?

【问题讨论】:

    标签: c# npoi cell-formatting


    【解决方案1】:

    幸运的是,你能做到……看看这段代码:

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

    【讨论】:

    • 这完美地回答了这个问题。很有帮助。谢谢
    【解决方案2】:

    你可以试试这个:

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

    【讨论】:

    • 我用它来将粗体文本设置为整个单元格,而不是一半/一半
    • OP 正在询问富单元格文本。您将如何将此字体应用于单元格文本的一部分?
    【解决方案3】:

    似乎 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;
    

    【讨论】:

    • OP 正在询问富单元格文本。您将如何将此字体应用于单元格文本的一部分?
    【解决方案4】:

    使用此选项

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

    【讨论】:

      【解决方案5】:

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

      【讨论】:

      • 错误。 (您应该接受给定的答案之一)
      • @Slight 这是近 4 年前的回答。那时,即使使用了建议的解决方案,代码也不能像我需要的那样工作。顺便说一句,我可以问一下对近 4 岁的答案投反对票的价值是什么?
      • @Nathan,你能试试这个吗? stackoverflow.com/a/6911583/463571 答案创建于 2011 年 8 月
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-24
      • 1970-01-01
      • 1970-01-01
      • 2013-01-31
      • 1970-01-01
      • 2014-09-04
      • 1970-01-01
      相关资源
      最近更新 更多