You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ClosedXML修改Excel单元格中部分文本的背景色

如何修改Excel单元格内部分文本的背景色?

可以修改Excel单元格内部分文本的背景色,不同工具/库的实现方式如下:

使用EPPlus(.NET)

EPPlus的RichText对象支持为子文本片段设置BackgroundColor属性,示例代码:

using (var package = new ExcelPackage(new FileInfo("test.xlsx")))
{
    var worksheet = package.Workbook.Worksheets[0];
    var cell = worksheet.Cells[1, 1];
    cell.Value = "这是一段测试文本";
    
    // 获取目标子文本片段(索引从0开始)
    var richText = cell.RichText.Add("这是一段测试文本");
    var targetSegment = richText.Substring(2, 5); // 对应字符串"一段测试"
    targetSegment.BackgroundColor = Color.Yellow; // 设置背景色为黄色
    
    package.Save();
}

使用OpenXML SDK(.NET)

通过操作Run元素的Shading属性来设置子文本背景色,示例代码:

using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;

using (SpreadsheetDocument doc = SpreadsheetDocument.Open("test.xlsx", true))
{
    Worksheet worksheet = doc.WorkbookPart.WorksheetParts.First().Worksheet;
    Cell cell = worksheet.Descendants<Cell>().First(c => c.CellReference == "A1");
    
    // 构建富文本内容,为指定片段添加背景色
    var inlineString = new InlineString();
    // 第一段无背景色的文本
    inlineString.Append(new Run(new Text("这是")));
    
    // 第二段带黄色背景的文本
    var shadedRun = new Run(new Text("一段测试"));
    var runProps = new RunProperties();
    runProps.Append(new Shading() 
    { 
        PatternType = PatternValues.Solid, 
        ForegroundColor = "FFFFFF", 
        BackgroundColor = "FFFF00" 
    });
    shadedRun.Append(runProps);
    inlineString.Append(shadedRun);
    
    // 第三段无背景色的文本
    inlineString.Append(new Run(new Text("文本")));
    
    // 替换单元格内容
    cell.RemoveAllChildren<CellValue>();
    cell.Append(inlineString);
    worksheet.Save();
}

使用VBA

直接通过单元格的Characters对象设置Font.Background属性,示例代码:

Sub SetPartialCellBackgroundColor()
    Dim targetCell As Range
    Set targetCell = ThisWorkbook.Sheets(1).Range("A1")
    targetCell.Value = "这是一段测试文本"
    
    ' 设置第3到第7个字符的背景色(Start参数从1开始计数)
    targetCell.Characters(Start:=3, Length:=5).Font.Background = RGB(255, 255, 0)
End Sub

如果使用其他Excel操作库(如NPOI),核心思路一致:定位到目标文本片段,调用对应的背景色设置属性即可。

内容的提问来源于stack exchange,提问作者jakob Ruedisser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 13:17:38