NPOI:创建一个包含两个不同大小字符串的单元格
NPOI: Create a cell containing two differently sized strings
正如标题所指,我想在包含 2 个字符串的 NPOI 2.1.3-Workbook 中创建一个单元格:一个 "normal" 大小的字符串和一个 "small" 大小的字符串。 => 我想为单元格的一部分更改 font-size。
到目前为止我的代码:
var planCell = planRow.CreateCell(lineCnt + 1);
var planCellStyle = workbook.CreateCellStyle();
planCellStyle.WrapText = true;
planCellStyle.VerticalAlignment = VerticalAlignment.Top;
planCellStyle.Alignment = HorizontalAlignment.Left;
var font = workbook.CreateFont();
font.FontName = HSSFFont.FONT_ARIAL;
font.FontHeightInPoints = 16;
font.Boldweight = (short)FontBoldWeight.Bold;
planCellStyle.SetFont(font);
planCell.CellStyle = planCellStyle;
string planTitleContent = string.Empty;
... (some logic to get desired string for planTitleContent)
string planInfoContent = string.Empty;
... (some logic to get desired string for planInfoContent)
planCell.SetCellValue(planTitleContent + "\n\n"+planInfoContent);
准确地说,我希望 "planInfoContent" 部分比 "planCellContent" 部分显示得更小 font-size。我搜索了很多,但我只是找到了适用于整个单元格的 CellStyle-value 。所以我希望我遗漏了一些东西,因为两个单元格并不是一个真正的选择。
我自己想出来了:)
首先,创建 2 种所需格式的字体(为了我和简单起见,只有字体大小是相关的):
var font1 = excel.CreateFont();
font1.FontName = HSSFFont.FONT_ARIAL;
font1.FontHeightInPoints = 12;
font1.Boldweight = (short)FontBoldWeight.Normal;
var font2 = excel.CreateFont();
font2.FontName = HSSFFont.FONT_ARIAL;
font2.FontHeightInPoints = 8;
font2.Boldweight = (short)FontBoldWeight.Normal;
然后,在您获得字符串后,使用 (N)POIs applyFont-方法。
它在 NPOI 中的一个实现具有以下签名:
applyFont(int startIndex, int endIndex, IFont font)
所以现在,有了字符串 planTitleContent
和字符串 planInfoContent
,剩下的步骤就很明显了:只需创建一个 IRichTextString
的实例并通过构造函数参数将字符串添加到其中.然后,像这样通过索引应用想要的字体:
IRichTextString formattedCellContent = new HSSFRichTextString(planTitleContent + "\n"+planInfoContent);
richString.ApplyFont(0, planTitleContent.Length, font1);
richString.ApplyFont(planTitleContent.Length + 1, (planTitleContent + "\n" + planInfoContent).Length, font2);
planCell.SetCellValue(formattedCellContent);
所以,这对我来说就像一个魅力。希望它能帮助其他人!
正如标题所指,我想在包含 2 个字符串的 NPOI 2.1.3-Workbook 中创建一个单元格:一个 "normal" 大小的字符串和一个 "small" 大小的字符串。 => 我想为单元格的一部分更改 font-size。
到目前为止我的代码:
var planCell = planRow.CreateCell(lineCnt + 1);
var planCellStyle = workbook.CreateCellStyle();
planCellStyle.WrapText = true;
planCellStyle.VerticalAlignment = VerticalAlignment.Top;
planCellStyle.Alignment = HorizontalAlignment.Left;
var font = workbook.CreateFont();
font.FontName = HSSFFont.FONT_ARIAL;
font.FontHeightInPoints = 16;
font.Boldweight = (short)FontBoldWeight.Bold;
planCellStyle.SetFont(font);
planCell.CellStyle = planCellStyle;
string planTitleContent = string.Empty;
... (some logic to get desired string for planTitleContent)
string planInfoContent = string.Empty;
... (some logic to get desired string for planInfoContent)
planCell.SetCellValue(planTitleContent + "\n\n"+planInfoContent);
准确地说,我希望 "planInfoContent" 部分比 "planCellContent" 部分显示得更小 font-size。我搜索了很多,但我只是找到了适用于整个单元格的 CellStyle-value 。所以我希望我遗漏了一些东西,因为两个单元格并不是一个真正的选择。
我自己想出来了:)
首先,创建 2 种所需格式的字体(为了我和简单起见,只有字体大小是相关的):
var font1 = excel.CreateFont();
font1.FontName = HSSFFont.FONT_ARIAL;
font1.FontHeightInPoints = 12;
font1.Boldweight = (short)FontBoldWeight.Normal;
var font2 = excel.CreateFont();
font2.FontName = HSSFFont.FONT_ARIAL;
font2.FontHeightInPoints = 8;
font2.Boldweight = (short)FontBoldWeight.Normal;
然后,在您获得字符串后,使用 (N)POIs applyFont-方法。
它在 NPOI 中的一个实现具有以下签名:
applyFont(int startIndex, int endIndex, IFont font)
所以现在,有了字符串 planTitleContent
和字符串 planInfoContent
,剩下的步骤就很明显了:只需创建一个 IRichTextString
的实例并通过构造函数参数将字符串添加到其中.然后,像这样通过索引应用想要的字体:
IRichTextString formattedCellContent = new HSSFRichTextString(planTitleContent + "\n"+planInfoContent);
richString.ApplyFont(0, planTitleContent.Length, font1);
richString.ApplyFont(planTitleContent.Length + 1, (planTitleContent + "\n" + planInfoContent).Length, font2);
planCell.SetCellValue(formattedCellContent);
所以,这对我来说就像一个魅力。希望它能帮助其他人!