office.js将表插入Powerpoint

时间:2018-10-31 16:16:19

标签: javascript powerpoint office-js

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

  • 是否有其他好的解决方案来制作外接程序,可以解决将表插入PowerPoint的问题?
  • 有人知道Office.js是否在不久的将来支持在PowerPoint中插入表格?

我要执行的操作的代码段:

 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);
            }
        });
}

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

1 个答案:

答案 0 :(得分:0)

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

Office.js AddIns 在浏览器上运行(如果在办公程序中使用 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();
    });

  });