NPOI:更改单元格中某些(不是全部)文本的字体颜色
NPOI: change font color of some (not all) text in cell
使用 C# NPOI 时,是否可以仅更改单元格中部分文本的字体颜色?我知道您可以更改整个单元格的字体颜色。但我只想更改该单元格中最后 4 个字符的颜色。
我知道 VBA 中有一种方法可以做到这一点:
但是,我没有看到使用 NPOI 做同样事情的方法
DotNetCore.NPOI 示例:
var newFile = @"newbook.core.xlsx";
using (var fs = new FileStream(newFile, FileMode.Create, FileAccess.Write))
{
var workbook = new XSSFWorkbook();
var sheet = workbook.CreateSheet("Sheet1");
var rowIndex = 0;
var row = sheet.CreateRow(rowIndex);
var cell = row.CreateCell(0);
var text = "this is content";
cell.SetCellValue(text);
var font = workbook.CreateFont();
font.Color = HSSFColor.Blue.Index2;
cell.RichStringCellValue.ApplyFont(text.Length - 4, text.Length, font);
workbook.Write(fs);
}
该代码也适用于 .NET 框架和 NPOI nuget 包。
结果:
单元格有 属性 RichStringCellValue
。您可以在 RichStringCellValue
上调用 ApplyFont
方法并指定应用字体的范围。
使用 C# NPOI 时,是否可以仅更改单元格中部分文本的字体颜色?我知道您可以更改整个单元格的字体颜色。但我只想更改该单元格中最后 4 个字符的颜色。
我知道 VBA 中有一种方法可以做到这一点:
但是,我没有看到使用 NPOI 做同样事情的方法
DotNetCore.NPOI 示例:
var newFile = @"newbook.core.xlsx";
using (var fs = new FileStream(newFile, FileMode.Create, FileAccess.Write))
{
var workbook = new XSSFWorkbook();
var sheet = workbook.CreateSheet("Sheet1");
var rowIndex = 0;
var row = sheet.CreateRow(rowIndex);
var cell = row.CreateCell(0);
var text = "this is content";
cell.SetCellValue(text);
var font = workbook.CreateFont();
font.Color = HSSFColor.Blue.Index2;
cell.RichStringCellValue.ApplyFont(text.Length - 4, text.Length, font);
workbook.Write(fs);
}
该代码也适用于 .NET 框架和 NPOI nuget 包。
结果:
单元格有 属性 RichStringCellValue
。您可以在 RichStringCellValue
上调用 ApplyFont
方法并指定应用字体的范围。