问题
目前我正在开发一个 Word 插件,为客户提供模板功能。我想在光标附近放置一个包含单个单元格表的 ContentControl。 Javascript API 提供了此功能,如 here (ContentControl class) 所示。 。不幸的是,可以将表格放置在控件内容之前或之后,但不可能用表格替换内容。每当我尝试实现后者时,我都会收到 InvalidArgument 异常。
同样,我无法在选择的文档中直接添加表格(没有 ContentControl)。抛出同样的异常。然而,在这种情况下,指定哪个位置选项(之前、之后、替换内容等)并不重要。
使用的技术是React和Typescript。
<小时/>内容控制表
private placeTableControl() {
Word.run(function (context) {
var values = [["Apple"]];
let selectionRange = context.document.getSelection();
let contentControl = selectionRange.insertContentControl();
// This works
// let table = contentControl.insertTable(1, 1, 'Start', values);
// This doesn't
let table = contentControl.insertTable(1, 1, 'Replace', values);
return context.sync()
.catch(function (error) {
console.log(error);
});
});
}
<小时/>
添加不带 ContentControl 的表格
private placeTable() {
Word.run(function (context) {
var values = [["Apple"]];
let selectionRange = context.document.getSelection();
// This doesn't work.
let table = selectionRange.insertTable(1, 1, 'Replace', values);
// Neither does this.
//let table = selectionRange.insertTable(1, 1, 'Start', values);
// Or this.
//let table = selectionRange.insertTable(1, 1, 'End', values);
return context.sync()
.catch(function (error) {
console.log(error);
});
});
}
<小时/>
部分解决 - 建议 Cindy Meister
Cindy Meister 认为这可能与段落有关。表格应位于段落中。由于我错误地指定了简单数组而不是二维数组,因此我无法使其工作。这似乎现在正在发挥作用。我现在将尝试使其与内容控件一起使用。
private placeTable() {
Word.run(function (context) {
var values = [["Apple"]];
var selectionRange = context.document.getSelection();
var paragraph = selectionRange.insertParagraph("", "Before");
return context.sync()
.then(function () {
paragraph.insertTable(1, 1, "Before", values);
})
.then(context.sync)
.catch(function (error) {
console.log(error);
});
});
}
<小时/>
类似问题
发现类似问题here .
最佳答案
Cindy Meister建议首先插入一个段落,因为表格不能插入包含其他内容的段落中。事实证明这是解决方案,请参阅下面的代码。所有作品均属于 Cindy Meister。
private placeTable() {
Word.run(function (context) {
var values = [["Apple"]];
var selectionRange = context.document.getSelection();
var paragraph = selectionRange.insertParagraph("", "Before");
return context.sync()
.then(function () {
var table = paragraph.insertTable(1, 1, "Before", values);
var contentControl = table.insertContentControl();
})
.then(context.sync)
.catch(function (error) {
console.log(error);
});
});
关于javascript - 使用Javascript API在Word文档中的光标处插入表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48766549/