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

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

Этот текст полужирный - этот текст нормальный

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

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

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

c#,npoi,cell-formatting,

19

Ответов: 5


20

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

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

17

Вы можете попробовать следующее:

        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

Похоже, что ответ Эрни Банзона больше не работает точно так, как описано, возможно, из-за изменения пространства имен (или, фактически, я использую пространство имен HSSF?)

// usings
using NPOI.HSSF.UserModel;

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

1

Используйте эту опцию

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

0 принят

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

C #, npoi, клеточно-форматирование,
Похожие вопросы