在许多办公场景下,制作幻灯片是一种刚需,而一份美观、规范的幻灯片往往离不开模板的帮助。但是,大部分公司都有自己的视觉识别(VI)规范,直接应用外部模板通常意味着字体、配色、字号、标题等都需要大幅修改,最终交付成果还可能存在版权风险。因此,为公司定制专属模板就显得尤为重要。
虽然 PowerPoint 本身提供了模板功能,但在灵活性、便捷性和细节控制方面往往不尽如人意,使得模板的制作和使用常常需要第三方插件的辅助——你或许听说或用过像 iSlide、Office 工具箱这类面向大众用户的插件。
然而,在商业管理咨询、金融等专业领域,特别是在商业图表制作方面,一款名为 think-cell 的插件占据了主导地位。它专注于「更便捷高效地制作专业商业图表」,能够帮助用户轻松创建和管理各种复杂图表,显著提升幻灯片的专业性和图表制作效率,在这些行业中几乎形成了垄断。

除了操作上的便捷性,think-cell 的一个核心优势在于允许用户通过自定义 XML 样式文件,对图表的方方面面(从配色到线条样式)做细致入微的定制。这使得演示文稿能够完美契合公司的 VI 系统要求,确保最终交付成果的统一性和专业性,也能提高效率。
以下是一些使用 think-cell 制作的图表示例:

think-cell 支持 Office 2010 及 Office for Mac 2016 以来的所有版本,采用订阅制授权,定价为每用户每月 28.5 美元。部分高校用户可以申请教育用途的免费许可证。对于双系统用户而言,think-cell 充分支持 Mac 平台,且 Mac 版的功能和操作体验与 Windows 版基本一致,这也是它的一大优点。
接下来,本文将一步步为你演示 think-cell 是如何通过 XML 样式文件实现这些强大定制功能的。希望这篇文章能帮助已经了解这款工具的朋友深入掌握其用法,也为那些尚不了解但有类似需求的朋友提供一种新的解决方案。
样式文件定制入门
think-cell 使用 XML 格式的样式文件(style file)来定义幻灯片中图表的外观。在开始定制之前,让我们先简单了解一下 XML。
XML(Extensible Markup Language,可扩展标记语言)是一种用于结构化存储与交换数据的标记语言,广泛应用于配置文件、数据传输和文档结构等领域。它并非专属于某个软件,而是一种开放的、与平台无关的技术。
我们熟悉的 Office 文档格式 Office Open XML (OOXML),就是一套基于 XML 的文件格式标准。你可以尝试将任何一个 .docx
或 .pptx
文件后缀改为 .zip
再解压缩,就会发现其中包含了一整套 XML 文件。
由于 think-cell 是 PowerPoint 的插件,其样式文件的结构在某些方面与 OOXML 有相似之处。
要开始定制,首先需要找到 think-cell 的样式文件。你可以打开 think-cell 插件菜单中的「工具」>「关于」,在弹出的窗口中会显示其程序配置文件的位置。


建议使用专业的代码编辑器(如 VS Code、Sublime Text 等)来编辑 XML 文件,这些编辑器提供的代码高亮、自动补全和文件目录管理功能,将大大提升编辑体验。
think-cell 样式文件的核心设计思想可以概括为「先声明、再应用」。简单来说,就是先在一个地方(通常是文件的前部)集中定义好所有可用的基础元素,如颜色、线条样式、标记形状等;然后在需要应用这些元素的地方(如具体的图表配色方案),通过名称来「引用」这些已声明的元素。这样,修改一处声明,所有引用该声明的地方都会自动更新,极大地便利了样式的统一维护。
让我们通过一个简化的例子来理解这个引用关系。假设我们想定义一个名为 makubex
的配色方案,那么它在样式文件里会依次留下这些足迹:

上图中:
fillLst
(颜色列表): 这里集中声明了所有可用的颜色,每个颜色都有一个唯一的名称和对应的色值。fillSchemeLst
(配色方案列表): 这里定义了各种配色方案。每个方案 (fillScheme
) 内部通过引用fillLst
中声明的颜色名称 (fillRef name="..."
) 来指定其颜色序列。fillSchemeRefDefault
(默认配色方案引用): 这个元素指定了在未明确选择时,think-cell 默认使用哪个配色方案。
更一般地,根据官方文档,think-cell 的样式文件主要包含以下几类模块,用于定义图表的各种外观属性:
分类 | 模块(XML 元素) | 作用 |
---|---|---|
样式定义基础 | fillLst , lnLst , markerLst |
定义所有可用的基础填充颜色、线条样式、标记形状。可以理解为「原材料库」。 |
图表配色方案 | fillSchemeLst , lnfillmarkerSchemeLst , fillmarkerSchemeLst |
组合基础元素,形成具体的配色方案或样式组合。可以理解为使用「原材料」制作的「菜谱」。 |
默认颜色填充方案 | fillSchemeRefDefault 等 11 种默认引用 |
指定在插入不同类型图表时,默认应用的配色方案。 |
默认图表样式方案 | lnfillDefault , lnfillGridline , shapestyleLst |
定义图表在没有单独指定方案时的默认外观,如网格线样式等。 |
标签与图表装饰线 | label , chart |
控制标签文本样式和图表内部辅助线的样式。 |
特殊组件样式 | harveyball , checkbox , gantt |
为 Harvey Ball、复选框、甘特图等特殊图形和功能性元素定义样式。 |
对于初学者来说,不必一次性掌握所有模块。我们将从最常用、最重要的部分开始,结合实例进行定制。
样式文件定制实战:打造你的专属图表风格
现在,让我们开始动手定制一个个性化的 XML 样式文件。我们将逐步完成定义公司专属颜色、创建不同类型的图表方案,并最终设置默认样式。
一、定义公司专属颜色
实现公司品牌形象统一的第一步,也是最重要的一步,就是定制专属配色。在 think-cell 的 XML 样式文件中,所有可用的颜色都在 <fillLst>
(颜色列表) 元素中统一定义。这个列表就像一个调色盘,后续创建的所有配色方案都将从这里选取颜色。
每个颜色定义通常包含两个核心信息:一个易于识别的名称 (name
属性) 和具体的颜色值 (通常使用 sRGB 十六进制色值或引用 PowerPoint 主题颜色)。
假设我们需要定义以下四种公司品牌颜色:
- Cyan1 (水蓝):
#00FFF6
- Cyan2 (冰蓝):
#00E7FF
- Azure (天蓝):
#009EFF
- Blue (蓝色):
#0014FF

我们可以在 <fillLst>
标签内添加如下代码:
<fillLst>
<!-- 这里可能已经存在很多think-cell默认的颜色定义 -->
<!-- 建议在已有颜色的末尾,或使用<separator/>分隔后添加新颜色 -->
<separator/> <!-- 在菜单中显示为一条分割线,方便组织 -->
<!-- 新增:Cyan1 / Cyan2 / Azure / Blue -->
<solidFill name="Cyan1">
<srgbClr val="00FFF6"/>
</solidFill>
<solidFill name="Cyan2">
<srgbClr val="00E7FF"/>
</solidFill>
<solidFill name="Azure">
<srgbClr val="009EFF"/>
</solidFill>
<solidFill name="Blue">
<srgbClr val="0014FF"/>
</solidFill>
</fillLst>
代码解释:
<fillLst>...</fillLst>
: 这是颜色列表的容器标签。<solidFill name="颜色名称">...</solidFill>
: 定义一个纯色填充。name
属性:为这个颜色指定一个易于识别的名称。这个名称会显示在 think-cell 操作界面的颜色选择菜单中,所以尽量起得有意义。
<srgbClr val="十六进制色值"/>
: 指定颜色的 sRGB 值,val
属性的值是不带#
号的六位十六进制颜色代码。注意这是一个自闭合标签,因为它没有子元素或内容,也就没有匹配的终止标签。XML 中类似的自闭合标签还有<separator/>
、<noLine/>
(无边框)、<noMarker/>
(无标记) 等。<separator/>
: 在 think-cell 的颜色选择菜单中插入一条分割线,有助于组织和区分不同的颜色组。
在 think-cell 默认的样式文件中,你可能还会看到类似 <schemeClr val="tx1"/>
或 <schemeClr val="accent1"/>
这样的颜色定义。这表示该颜色引用的是当前 PowerPoint 演示文稿主题中预设的颜色(例如,「文本颜色 1」或「强调颜色 1」)。这样做的好处是,当 PowerPoint 主题颜色改变时,think-cell 图表中引用了这些主题色的部分也会随之自动更新,保持与演示文稿整体风格的一致。

完成上述颜色的定义并加载此样式文件后,在 think-cell 的颜色选择菜单中,你就能看到刚才添加的自定义颜色了:

除了上述主要填充色之外,我们再定义一组额外的,以蓝色为基础的梯度填充颜色,给后续的 marker 部分使用(这里不理解可先略过):
<fillLst>
<!-- 追加到已经存在的颜色定义下方 -->
<separator/>
<solidFill name="Blue Dark Grey">
<srgbClr val="748FFC"/>
</solidFill>
<solidFill name="Blue Med. Light Grey">
<srgbClr val="BAC8FF"/>
</solidFill>
<solidFill name="Blue Light Grey">
<srgbClr val="DBE4FF"/>
</solidFill>
<solidFill name="Blue Lightest Grey">
<srgbClr val="EDF2FF"/>
</solidFill>
<separator/>
</fillLst>

二、创建图表配色方案(SchemeLst
)
定义好基础颜色后,下一步是创建图表配色方案 (Scheme)。方案决定了这些颜色在图表中的应用顺序和方式。think-cell 中有几种不同类型的方案列表 (SchemeLst
),分别对应不同类型的图表元素组合:
方案列表 (XML 元素) | 控制的内容 | 主要应用的图表类型 |
---|---|---|
fillSchemeLst |
填充颜色方案 | 柱状图、堆积图、瀑布图、Mekko 图、饼图、面积图、气泡图等以「填充区域」为主的图表。 |
lnfillmarkerSchemeLst |
线条颜色、线型、标记组合方案 | 折线图、组合图中的折线部分,以及所有用「线条」表示数据系列的图表。 |
fillmarkerSchemeLst |
标记形状 + 填充颜色方案 | 散点图,甘特图中的里程碑标记等以「数据点标记」为主的图表。 |
我们将依次为这几类方案创建自定义配置。
1. 柱形图等填充类图表的配色方案 (<fillSchemeLst>
)
首先,我们为最常用的柱状图、瀑布图、饼图等创建配色方案。这些方案定义在 <fillSchemeLst>
元素内。我们来创建一个名为 benjamin2025
的方案,并额外创建一个颜色顺序相反的版本 benjamin2025 Rev
。
<fillSchemeLst>
<!-- 这里可能已有很多think-cell默认的配色方案 -->
<separator/> <!-- 在菜单中显示分割线 -->
<!-- 新增:benjamin2025 和 benjamin2025 Rev 两个图表方案 -->
<fillScheme name="benjamin2025" fillRefOtherSeries="White" repeatLast="1">
<!-- 定义图表段(如柱子)的边框样式 -->
<lnfillSegment>
<noLine/> <!-- 表示柱子之间没有边框线 -->
</lnfillSegment>
<!-- 专门为 Mekko 图定义边框样式 -->
<lnfillSegmentMekko>
<lnRef name="Solid 0.75 pt"/> <!-- 引用预定义的 0.75 磅实线 -->
<solidfillRef name="bg1"/> <!-- 边框颜色引用 PowerPoint 背景色 1 -->
</lnfillSegmentMekko>
<!-- 引用在 <fillLst> 中定义的颜色名称,决定了颜色顺序 -->
<fillRef name="Cyan1"/>
<fillRef name="Cyan2"/>
<fillRef name="Azure"/>
<fillRef name="Blue"/>
</fillScheme>
<fillScheme name="benjamin2025 Rev" reverse="true" fillRefOtherSeries="White" repeatLast="1">
<lnfillSegment>
<noLine/>
</lnfillSegment>
<lnfillSegmentMekko>
<lnRef name="Solid 0.75 pt"/>
<solidfillRef name="bg1"/>
</lnfillSegmentMekko>
<!-- 颜色引用顺序与上面相同,但因为 reverse="true",实际应用时会反转 -->
<fillRef name="Cyan1"/>
<fillRef name="Cyan2"/>
<fillRef name="Azure"/>
<fillRef name="Blue"/>
</fillScheme>
<separator/>
</fillSchemeLst>
代码解释: