26. 使用 JSON 数据实现自动化
您可以使用 JSON 中的数据复制起初创建为模板的图表,并为其提供新的数据表。您可以控制为了构造新的演示文稿而使用特定模板的顺序。也可以多次使用模板。
PowerPoint 模板和 JSON 数据都可以进行本地存储或远程存储。JSON 数据甚至可以由 Web 服务动态产生。
- 26.1
- 用于 think-cell 的 JSON 数据结构
- 26.2
- 使用 JSON 数据创建演示文稿
- 26.3
- 远程提供 JSON 数据
- 26.4
- 远程提供模板
- 26.5
- 远程处理 JSON 数据
26.1 用于 think-cell 的 JSON 数据结构
以下展示了用于 think-cell 的 JSON 数据示例,也可以在 think-cell 安装目录的子文件夹 sample.ppttc
的文件 ppttc
中找到该示例。JSON 可指定演示文稿将通过一连串模板而创建。它符合 ppttc/ppttc-schema.json
中的架构。
在根级别中是项的阵列。每一项都会指定其图表的模板文件和数据。可以串联不同的模板,可以多次使用单一模板。在最简单的情况下,单一模板仅使用一次,用于向该模板中包含的所有图表填入数据。
串联模板阵列中的每项都包含两个键: template
和 data
。 template
的值是包含 think-cell 图表(已将名称设为标识符)的 PowerPoint 文件的路径(请参阅 24. 自动化简介)。也可以按照远程提供 JSON 数据中所述,从远程位置取回模板文件。
键的值 data
键的值是模板中所含图表的数据表格(采用 JSON 格式)列表。列表中的每一项具有两个属性: name
和 table
. name
会指定使用其名称的图表, table
将包含数据表格。
针对以下的值的结构: table
值的结构直接对应于未转置的数据表(其行表示系列,列表示类别)。对于默认图表,意味着将显示以下行顺序:
- 行以空单元格(
null
)开始,然后是具有类别名称的单元格。 - 具有 100% 值的行。若未使用 100% 值,会将空行指定为
[]
. - 存在多行,其中行的第一个单元格提供系列名称,随后的单元格包含数值。
若可为图表指定名称,则可在 JSON 中引用该图表。如需其特定数据表布局,请参阅相应各章,或打开图表的内部数据表进行参考。
注释:think-cell 数据表范围内的任何单元格可以包含任何类型的文本。若需要,也可以填写第一行的第一个单元格。
组成 table
键值的数据必须符合架构中设置的特定规则。table
键本身的值是阵列。子阵列表示数据表的行。使用空阵列 []
可以指定空行。单元格的内容由此类子阵列中列出的元素描述。元素的顺序对应于数据表中列的顺序。必须使用 null
元素明确描述空单元格。必须使用其他键值对描述有内容的单元格。在此情况下,键会描述数据的类型,值会包含演示文稿中将显示的实际数据。支持三种不同的数据类型:
string
,用于表示任何类型的文本。支持所有可打印的 Unicode (UTF-8) 字符。例如:{"string":"Echo"}
number
,用于表示任何类型的数字。所用的小数点必须是点。例如:{"number":"5"}
date
,用于表示日期。所需的格式是 YYYY-MM-DD
。例如:{"date":"2016-09-04"}
对单元格内容进行任何格式设置(例如,指定日期格式)都必须在 PowerPoint 模板中完成。
对于命名的文本字段,该 table
元素仅包含一“行”中的一个“单元格”,因此您需要使用类似于以下段的 JSON 数组,该数字对于 data
元素中的每个命名文本字段都会出现一次:
26.2 使用 JSON 数据创建演示文稿
JSON 数据文件的文件类型必须是 .ppttc
。打开此类文件时:
- think-cell 会读取文件并检查其结构完整性。
- 将创建新的演示文稿。对于位于 JSON 文件顶级的每一项,新的演示文稿都会包含所指定模板的副本。
- 在模板副本中,根据
name
值所识别图表的数据表将替换为table
值中的数据。会更新任何总计标签、标签放置位置和差异箭头值,或其他图表效果。
此后,将显示新的演示文稿。用户可以进一步编辑其内容并保存,或以其他任何方式使用。
您还可以在命令行上从 JSON 数据创建演示文稿:
ppttc input.ppttc -o output.pptx
可执行的 ppttc.exe
位于 think-cell 的安装文件夹中。调用 ppttc.exe
可轻松集成到自动化工作流中。
26.3 远程提供 JSON 数据
.ppttc
文件中的 JSON 数据也可以由 Web 服务远程生成,并在 Web 浏览器中供用户下载。请参阅在下文以及在 think-cell 安装目录的子文件夹 sample.html
的文件 ppttc
中提供的示例。
在我们的示例中,用户请求下载时,对 JSON 数据进行了动态编译。示例嵌入的是静态数据,您当然也可以使用网站上用户提供的参数,通过其他数据源动态创建 JSON。
下载 .ppttc
文件时,用户可以采用对其他下载文件的相似方式,选择保存文件或打开文件。打开文件时,JSON 数据用于按照 使用 JSON 数据创建演示文稿 中所述创建新的演示文稿。
26.4 远程提供模板
也可以通过远程服务器提供具有 think-cell 图表的模板文件。在此情况下,键 template
的值是 URL,而不是本地路径,如以上远程 JSON 示例所示。该 URL 可以指定作为协议的 http
、用于安全连接的 https
,或在打开 .ppttc
文件的系统上有效的其他任何协议。
对引用远程模板的 .ppttc
文件进行处理时,PowerPoint 将取回模板文件。因此,打开 .ppttc
文件的用户需要具有远程模板的适当访问权限。
若 JSON 数据由 Web 服务远程生成,且模板也已远程存储,则在用户的计算机上只需要进行标准 think-cell 安装,即可使用含 think-cell 图表且动态生成的 PowerPoint 演示文稿。
26.5 远程处理 JSON 数据
您能以服务器的形式运行 think-cell 的 JSON 数据处理功能。在此情况下,将在远程服务器上合并 JSON 数据和模板以创建 PowerPoint 演示文稿。服务器接受 JSON 片段作为输入,并提供合并后的 PowerPoint 演示文稿作为输出,两者都通过 HTTP 来实现。
若要启动 think-cell 服务器,请前往安装文件夹,然后运行 tcserver.exe。将打开以下对话框:
启动服务器:
- 在 URL 表单中的 UrlPrefix 字段内指定服务器在侦听时使用的 IP 地址和端口。URL 的第一部分会确定将使用未加密的 HTTP 还是已加密的 HTTPS。
- 单击应用按钮。
- 在显示的“用户帐户控制 (UAC)”对话框中确认对系统的配置更改。
在窗口底部的日志字段中,您将看到确认信息,该信息将说明服务器已启动并且现在正在 URL 上进行侦听。在日志字段中,您还可以看到所有客户端请求及服务器响应。
若要停止服务器,请单击删除按钮。若要更改 URL,请在 UrlPrefix 字段中输入新的 URL,然后单击应用。
服务器接受 JSON 数据作为类型为 MIME 的 HTTP POST 请求,application/vnd.think-cell.ppttc+json
并以 PowerPoint 文件提供响应。
若要开始使用服务器,请复制 UrlPrefix 字段中的 URL,然后在浏览器中将其打开。将打开示例页。服务器会进行自我记录,示例页的 HTML 源代码显示了其用法以及详细的示例。示例包含以下元素:
- 按钮的 HTML 标记,在受到点击时,按钮会调用某种方法使用
XMLHttpRequest
与服务器进行通信。 - 静态 JSON 片段。在您使用时,通常会动态生成 JSON 数据。
- 某 JavaScript 函数,可将 JSON 数据发送到服务器。它会生成对静态 JSON 数据的 HTTP POST 请求。将以下载文件的形式向浏览器展示服务器响应。
生成 HTTP POST 请求以及将服务器响应另存成 PowerPoint 文件的任何其他方法也都有效。在您使用时,使用 JavaScript 并不限于此目的。