NPOI создает ячейку, содержащую полужирный и полужирный текст
Я использую NPOI для вывода excel из приложения ASP.NET MVC и отлично работает с простым текстом, но теперь мне было предложено добавить форматирование, и у меня возникают проблемы, когда мне нужно иметь одну ячейку с жирным шрифтом, -жирный текст. например.
Этот текст полужирный - этот текст обычный
Я знаю, что могу дать ячейке один стиль, но это не поможет, и я все равно не могу представить ячейке некоторый предварительно форматированный богатый текст.
Единственное возможное решение, о котором я могу думать, это создать две ячейки отдельно и объединить их вместе, но будет ли это означать, что форматирование будет потеряно?
Есть ли способ сделать это, что я пропустил в NPOI?
Ответы
Ответ 1
После достаточного количества исследований кажется, что вы не можете сделать это внутри NPOI, так как он не предоставляет необходимые функции, позволяющие вам устанавливать форматирование по определенному тексту внутри ячейки, как я пытался это сделать.
Ответ 2
К счастью, вы можете это сделать... Посмотрите на этот код:
Font f1=wb.CreateFont();
f1.Color=HSSFColor.RED.index;
ws.GetRow(1).GetCell(0).RichStringCellValue.ApplyFont(1, 5, f1);
Ответ 3
Вы можете попробовать следующее:
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);
Ответ 4
Кажется, что ответ Эрни Банзона больше не работает точно так, как описано, возможно, из-за изменения пространства имен (или, фактически, я использую пространство имен HSSF?)
// usings
using NPOI.HSSF.UserModel;
// IWorkbook doc
IFont font = doc.CreateFont();
font.FontHeightInPoints = 11;
font.FontName = "Arial";
font.Boldweight = (short)FontBoldWeight.BOLD;
Ответ 5
Используйте эту опцию
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,
}**