NPOI создать ячейку, содержащую полужирный и не полужирный текст

Я использую NPOI для вывода excel из Asp.Net MVC приложение и работает очень хорошо с простым текстом, но теперь было предложено добавить форматирование и возникли проблемы, когда мне нужно иметь одну ячейку с полужирным текстом, а затем не полужирным текстом. например,

этот текст выделен жирным шрифтом - это текст нормального

Я знаю, что могу дать ячейке один стиль, но это не поможет, и я все равно не вижу, чтобы дать ячейке некоторые предварительно отформатированные богатые текст.

единственное возможное решение, которое я могу придумать, - это создать две ячейки отдельно и объединить их вместе, но будет ли это означать, что форматирование будет потеряно?

есть ли способ сделать это, что я пропустил в NPOI?

5 ответов


к счастью, вы можете это сделать... Посмотрите на этот код:

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-это перечисление типов, которое после литья типа может не работать. В качестве обходного пути, если вы вводите касту или используете фактическое короткое значение перечисления напрямую, это работает. Ниже приводится декларация FontBoldWeight. это все прояснит.

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

после изрядного количества исследований кажется, что вы не можете сделать это внутри NPOI, поскольку он не предоставляет необходимую функциональность, чтобы позволить вам установить форматирование на определенный текст в ячейке, как я пытался сделать.