NPOI: изменить цвет шрифта некоторого (не всего) текста в ячейке

#c# #npoi

#c# #npoi

Вопрос:

При использовании C # NPOI есть ли способ изменить цвет шрифта только для части текста в ячейке? Я знаю, что вы можете изменить цвет шрифта для всей ячейки. Но я хотел бы изменить цвет только последних 4 символов в этой ячейке.

Я знаю, что есть способ сделать это в VBA:

введите описание изображения здесь

Однако я не вижу способа сделать то же самое с помощью NPOI

Ответ №1:

Пример для 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 framework и пакет nuget NPOI.

Результат:

Результат

Ячейка имеет свойство RichStringCellValue . Вы можете вызвать ApplyFont метод on RichStringCellValue и указать диапазон, в котором будет применен шрифт.

Комментарии:

1. Есть ли какая-либо причина, по которой вы не используете nuget.org/packages/NPOI посылка? Dotnetcore.npoi не поддерживается в течение длительного времени (по крайней мере, 4 года).

2. @TonyQu Как указано в ответе «Код также работает для . NET framework и пакет NPOI nuget «. Я пробовал оба пакета nuget.

3. Причина, по которой я упоминаю об этом, заключается в том, что Dotnetcore. NPOI — это просто разветвленная версия NPOI 2.2.1, и они только что перенесли ее. NET core, но никаких дальнейших исправлений ошибок вообще нет. Для получения подробной информации, пожалуйста, проверьте tonyqus.medium.com /.

4. Ваш код работает, потому что dotnetcore. NPOI — это просто NPOI 2.2.1, и пакет NPOI поддерживает . NET core долгое время. Но сообщество введено в заблуждение злой группой NCC, и они считают, что NPOI — это просто пакет .NET framework, что неверно.