NPOI:创建一个包含两个不同大小的字符串的单元格

时间:2015-01-30 08:13:33

标签: c# excel apache-poi string-formatting npoi

因为标题打算,我想在包含2个字符串的NPOI 2.1.3-Workbook中创建一个单元格:A"普通"大小的字符串和"小" - 大小的字符串=>我想更改单元格的一部分的字体大小。

到目前为止我的代码:

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" -part以比#34; planCellContent" -part更小的字体大小显示。我搜索了很多,但我刚刚找到适用于整个细胞的CellStyle值。所以我希望我错过了两个单元格的东西并不是真正的选择。

1 个答案:

答案 0 :(得分:2)

我自己想出来了:)

首先,创建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)POI applyFont - 方法。

其在NPOI中的一个实现具有以下特征:

applyFont(int startIndex, int endIndex, IFont font)

现在,拥有字符串planTitleContent和字符串planInfoContent,剩下的步骤非常明显:只需创建一个IRichTextString的实例,然后通过constructor-parameter将字符串添加到其中。然后,通过索引应用所需的字体,如下所示:

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

所以,这对我来说就像一个魅力。希望它可以帮助其他人!