首页 > 解决方案 > office.js 将表格插入到 powerpoint

问题描述

我正在尝试使用 office.js 制作 PowerPoint 加载项。该加载项假设从外部源收集数据并将包含数据的表格插入到 PowerPoint 中,但我在将表格插入到 Powerpoint 中时遇到了一些麻烦。似乎 office.js 没有将表格插入 PowerPoint 的功能(仅适用于 Excel 和 Word)。

我正在尝试做的代码片段:

 function insertTable() {
    var table = new Office.TableData();
    table.headers = [['Header', 'Header']];
    table.rows = [['Entry', 'Entry'], ['Entry', 'Entry'], ['Entry', 'Entry']];
    Office.context.document.setSelectedDataAsync(table, {coercionType: Office.CoercionType.Table},
        function (asyncResult) {
            if (asyncResult.status === Office.AsyncResultStatus.Failed) {
                console.log(asyncResult.error.message);
            }
        });
}

-->“当前主机应用程序不支持枚举。”

标签: javascriptpowerpointoffice-js

解决方案


我不得不将一个旧的 VSTO 插件移植到 Office.js,并且正在努力将图表和表格添加到 PowerPoint,据我所知,没有直接的方法可以做到这一点:

Office.js 插件在浏览器上运行(如果在办公程序中使用 Edge Legacy),所以 JavaScript 的魔法可以拯救。

Office.js 提供了一种将幻灯片从现有演示文稿插入到活动演示文稿的方法。有许多 JavaScript 库支持使用 OpenXML 标准的 PowerPoint 演示文稿。我用过PPTXGenJS

使用这个库,我在内存中创建了一个演示文稿,将其转换为 base64 格式并将其插入到活动演示文稿中,如下所示:

var pres = new PptxGenJS();
  var slide = pres.addSlide();
  slide.addTable(['Color', 'Value'], ['Red', 1], ['Blue', 2]);
  pres.write('base64').then(async function (data) {
    await PowerPoint.run(async function (context) {
      const selectedSlideID = 256;//await getSelectedSlideID();
      context.presentation.insertSlidesFromBase64(data, { formatting: PowerPoint.InsertSlideFormatting.useDestinationTheme, targetSlideId: selectedSlideID + "#" });
      await context.sync();
    });

  });

推荐阅读