我正在尝试使用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);
}
});
}
->“当前主机应用程序不支持枚举。”
答案 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();
});
});