PhpSpreadsheet使用指南:如何给单元格内的部分指定文本设置加粗效果
PhpSpreadsheet 单个单元格内多指定词语加粗实现方案
实现单元格局部文本格式自定义需要依赖RichText富文本对象,将文本拆分为普通段和加粗段分别配置格式后再赋值给单元格
完整实现代码
以下代码可直接对接你提供的基础初始化逻辑:
use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; use PhpOffice\PhpSpreadsheet\Style\{Font, Border, Alignment}; use PhpOffice\PhpSpreadsheet\RichText\RichText; $spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet(); // -------------------------- 核心逻辑开始 -------------------------- // 配置项:原始文本、需要加粗的关键词数组 $originalText = "这是测试内容,需要加粗的词为PHP、Excel,后续出现的PHP也会自动加粗,其他文本保持普通格式"; $targetBoldWords = ["PHP", "Excel"]; // 初始化富文本对象,创建加粗样式 $richText = new RichText(); $boldFont = $richText->createFont(); $boldFont->setBold(true); // 可扩展加粗样式:比如设置颜色 $boldFont->setColor(new \PhpOffice\PhpSpreadsheet\Style\Color(\PhpOffice\PhpSpreadsheet\Style\Color::COLOR_RED)); // 文本拆分匹配逻辑 $currentOffset = 0; $textTotalLength = mb_strlen($originalText); while ($currentOffset < $textTotalLength) { $foundWord = ''; $nearestPos = $textTotalLength; // 查找当前位置之后最近的匹配关键词 foreach ($targetBoldWords as $word) { $pos = mb_strpos($originalText, $word, $currentOffset); if ($pos !== false && $pos < $nearestPos) { $nearestPos = $pos; $foundWord = $word; } } // 无匹配关键词,追加剩余文本后结束循环 if (empty($foundWord)) { $richText->createText(mb_substr($originalText, $currentOffset)); break; } // 追加关键词前的普通文本 if ($nearestPos > $currentOffset) { $normalText = mb_substr($originalText, $currentOffset, $nearestPos - $currentOffset); $richText->createText($normalText); } // 追加加粗的关键词 $richText->createTextRun($foundWord)->setFont($boldFont); // 偏移量移动到匹配关键词末尾 $currentOffset = $nearestPos + mb_strlen($foundWord); } // 将富文本赋值到指定单元格,比如A1 $sheet->setCellValue('A1', $richText); // -------------------------- 核心逻辑结束 -------------------------- // 后续导出逻辑 $writer = new Xlsx($spreadsheet); $writer->save('test.xlsx');
注意事项
- 处理包含中文的文本必须使用
mb_开头的多字节处理函数,避免出现乱码、拆分错位问题 - 如果需要给不同关键词设置不同的格式(比如不同颜色、字号),可创建多个独立的Font对象分别分配给对应关键词
- 已经设置富文本的单元格不要再次整体配置单元格字体格式,避免覆盖局部自定义样式
内容的提问来源于stack exchange,提问作者Ded Dram
相关产品推荐
相关产品推荐

