了解最新技术文章
您可以使用 JSON 中的数据复制起初创建为模板的图表,并为其提供新的数据表。您可以控制为了构造新的演示文稿而使用特定模板的顺序。也可以多次使用模板。
PowerPoint 模板和 JSON 数据都可以进行本地存储或远程存储。JSON 数据甚至可以由 Web 服务动态产生。
26.1
用于 think cell 的 JSON 数据结构
26.2
使用 JSON 数据创建演示文稿
26.3
远程提供 JSON 数据
26.4
远程提供模板
26.5
远程处理 JSON 数据
以下展示了用于 think cell 的 JSON 数据示例,也可以在 think cell 安装目录的子文件夹 ppttc
的文件 sample.ppttc
中找到该示例。JSON 可指定演示文稿将通过一连串模板而创建。它符合 ppttc/ppttc-schema.json
中的架构。
在根级别中是项的阵列。每一项都会指定其图表的模板文件和数据。可以串联不同的模板,可以多次使用单一模板。在最简单的情况下,单一模板仅使用一次,用于向该模板中包含的所有图表填入数据。
串联模板阵列中的每项都包含两个键: template
和 data
。 template
的值是包含 think cell 图表(已将名称设为标识符)的 PowerPoint 文件的路径(请参阅自动化简介)。也可以按照远程提供 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
元素中的每个命名文本字段都会出现一次:
{ "name": "Title", "table": [[{"string":"A slide title"}]] },
JSON 数据文件的文件类型必须是 .ppttc
。打开此类文件时:
think cell 会读取文件并检查其结构完整性。
将创建新的演示文稿。对于位于 JSON 文件顶级的每一项,新的演示文稿都会包含所指定模板的副本。
在模板副本中,根据 name
值所识别图表的数据表将替换为 table
值中的数据。会更新任何总计标签、标签放置位置和差异箭头值,或其他图表效果。
此后,将显示新的演示文稿。用户可以进一步编辑其内容并保存,或以其他任何方式使用。
您还可以在命令行上从 JSON 数据创建演示文稿:
ppttc input.ppttc -o output.pptx
可执行的 ppttc.exe
位于 think cell 的安装文件夹中。调用 ppttc.exe
可轻松集成到自动化工作流中。
.ppttc
文件中的 JSON 数据也可以由 Web 服务远程生成,并在 Web 浏览器中供用户下载。请参阅在下文以及在 think cell 安装目录的子文件夹 ppttc
的文件 sample.html
中提供的示例。
<!DOCTYPE html> <html> <body> <h1>ppttc test</h1> <button type="button" onclick="myFunction()"> Download .ppttc </button> <a id="downloader" style="display:none"/> <script> function myFunction() { var obj = [ { template : "https://static.think cell.com/ppttc/template.pptx", data: [ { name: "Chart1", table: [ [null, {string:"Alpha"},{string:"Bravo"},{string:"Charlie"}], [], [{string:"Delta"},{number:1},{number:2},{number:3}], [{string:"Echo"},{number:4},{number:5},{number:6}] ] }, { name: "Chart2", table: [ [null, {date:"2016-09-03"},{date:"2016-09-04"},{date:"2016-09-05"}], [], [{string:"Foxtrot"},{number:7},{number:8},{number:9}], [{string:"Gulf"},{number:10},{number:11},{number:12}] ] } ] } ]; var elemDownloader = document.getElementById("downloader"); elemDownloader.setAttribute("href","data:application/vnd.think cell.ppttc+json;charset=utf-8," + encodeURIComponent(JSON.stringify(obj))); elemDownloader.setAttribute("download", "sample.ppttc"); elemDownloader.click(); } </script> </body> </html>
图 23.1:远程 JSON 示例
在我们的示例中,用户请求下载时,对 JSON 数据进行了动态编译。示例嵌入的是静态数据,您当然也可以使用网站上用户提供的参数,通过其他数据源动态创建 JSON。
下载 .ppttc
文件时,用户可以采用对其他下载文件的相似方式,选择保存文件或打开文件。打开文件时,JSON 数据用于按照 使用 JSON 数据创建演示文稿 中所述创建新的演示文稿。
也可以通过远程服务器提供具有 think cell 图表的模板文件。在此情况下,键 template
的值是 URL,而不是本地路径,如以上远程 JSON 示例所示。该 URL 可以指定作为协议的 http
、用于安全连接的 https
,或在打开 .ppttc
文件的系统上有效的其他任何协议。
对引用远程模板的 .ppttc
文件进行处理时,PowerPoint 将取回模板文件。因此,打开 .ppttc
文件的用户需要具有远程模板的适当访问权限。
若 JSON 数据由 Web 服务远程生成,且模板也已远程存储,则在用户的计算机上只需要进行标准 think cell 安装,即可使用含 think cell 图表且动态生成的 PowerPoint 演示文稿。
您能以服务器的形式运行 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 并不限于此目的。
24小时免费咨询
请输入您的联系电话,座机请加区号