ContentControl.insertOoxml 添加额外的段落
ContentControl.insertOoxml adds extra paragraphs
我正在尝试向我的 Word 文档添加一个新的内容控件,其中包含 table。我有 table 的 Ooxml,我将其插入到 insertOoxml
的新内容控件中。但是它在 table 之前添加了一个新段落,在它之后添加了另一个段落,如下图所示。
这是我的代码:
Word.run(function (context) {
var range = context.document.getSelection();
var myContentControl = range.insertContentControl();
myContentControl.title = "ZZZ";
myContentControl.insertOoxml(dataXml, 'end');
myContentControl.cannotEdit = false;
myContentControl.cannotDelete = false;
context.load(myContentControl, 'id, title, tag');
return context.sync().then(function () {
console.log("Success");
});
});
这是dataXml内容的主要部分:
<?mso-application progid="Word.Document"?>
<pkg:package xmlns:pkg="http://schemas.microsoft.com/office/2006/xmlPackage">
<!-- ... -->
<pkg:part pkg:name="/word/document.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml">
<pkg:xmlData>
<w:document xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:cx="http://schemas.microsoft.com/office/drawing/2014/chartex" xmlns:cx1="http://schemas.microsoft.com/office/drawing/2015/9/8/chartex" xmlns:cx2="http://schemas.microsoft.com/office/drawing/2015/10/21/chartex" xmlns:cx3="http://schemas.microsoft.com/office/drawing/2016/5/9/chartex" xmlns:cx4="http://schemas.microsoft.com/office/drawing/2016/5/10/chartex" xmlns:cx5="http://schemas.microsoft.com/office/drawing/2016/5/11/chartex" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://purl.oclc.org/ooxml/officeDocument/relationships" xmlns:m="http://purl.oclc.org/ooxml/officeDocument/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:wp="http://purl.oclc.org/ooxml/drawingml/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://purl.oclc.org/ooxml/wordprocessingml/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup" xmlns:wpi="http://schemas.microsoft.com/office/word/2010/wordprocessingInk" xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape" mc:Ignorable="w14 w15 wp14" w:conformance="strict">
<w:body>
<w:tbl>
<w:tblPr>
<w:tblStyle w:val="table" />
<w:tblW w:w="95.25pt" w:type="dxa" />
<w:tblInd w:w="0.8pt" w:type="dxa" />
<w:tblCellMar>
<w:top w:w="0pt" w:type="dxa" />
<w:start w:w="0pt" w:type="dxa" />
<w:bottom w:w="0pt" w:type="dxa" />
<w:end w:w="0pt" w:type="dxa" />
</w:tblCellMar>
<w:tblLook w:firstColumn="1" w:firstRow="1" w:lastColumn="1" w:lastRow="1" w:noVBand="1" />
</w:tblPr>
<w:tblGrid>
<w:gridCol w:w="952" />
<w:gridCol w:w="953" />
</w:tblGrid>
<w:tr>
<w:tblPrEx>
<w:tblW w:w="95.25pt" w:type="dxa" />
<w:tblInd w:w="0.8pt" w:type="dxa" />
<w:tblCellMar>
<w:top w:w="0pt" w:type="dxa" />
<w:start w:w="0pt" w:type="dxa" />
<w:bottom w:w="0pt" w:type="dxa" />
<w:end w:w="0pt" w:type="dxa" />
</w:tblCellMar>
<w:tblLook w:firstColumn="1" w:firstRow="1" w:lastColumn="1" w:lastRow="1" w:noVBand="1" />
</w:tblPrEx>
<w:trPr>
<w:trHeight w:hRule="exact" w:val="288" />
</w:trPr>
<w:tc>
<w:tcPr>
<w:tcW w:w="48.75pt" w:type="dxa" />
<w:tcBorders>
<w:top w:val="single" w:sz="6" w:space="0" w:color="B6B6B6" />
<w:start w:val="single" w:sz="6" w:space="0" w:color="B6B6B6" />
<w:bottom w:val="single" w:sz="6" w:space="0" w:color="B6B6B6" />
<w:end w:val="single" w:sz="6" w:space="0" w:color="B6B6B6" />
</w:tcBorders>
<w:shd w:val="clear" w:color="auto" w:fill="FFFFFF" />
<w:noWrap />
<w:tcMar>
<w:top w:w="0.4pt" w:type="dxa" />
<w:start w:w="0.4pt" w:type="dxa" />
<w:bottom w:w="0.4pt" w:type="dxa" />
<w:end w:w="0.4pt" w:type="dxa" />
</w:tcMar>
<w:vAlign w:val="bottom" />
<w:hideMark />
</w:tcPr>
<w:p>
<w:pPr>
<w:rPr>
<w:rFonts w:ascii="Calibri" w:eastAsia="Calibri" w:hAnsi="Calibri" w:cs="Calibri" />
<w:b w:val="0" />
<w:bCs w:val="0" />
<w:i w:val="0" />
<w:iCs w:val="0" />
<w:smallCaps w:val="0" />
<w:color w:val="000000" />
<w:sz w:val="22" />
<w:szCs w:val="22" />
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:rFonts w:ascii="Calibri" w:eastAsia="Calibri" w:hAnsi="Calibri" w:cs="Calibri" />
<w:b w:val="0" />
<w:bCs w:val="0" />
<w:i w:val="0" />
<w:iCs w:val="0" />
<w:smallCaps w:val="0" />
<w:color w:val="000000" />
<w:sz w:val="22" />
<w:szCs w:val="22" />
</w:rPr>
<w:t>A</w:t>
</w:r>
</w:p>
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="48.75pt" w:type="dxa" />
<w:tcBorders>
<w:top w:val="single" w:sz="6" w:space="0" w:color="B6B6B6" />
<w:start w:val="single" w:sz="6" w:space="0" w:color="B6B6B6" />
<w:bottom w:val="single" w:sz="6" w:space="0" w:color="B6B6B6" />
<w:end w:val="single" w:sz="6" w:space="0" w:color="B6B6B6" />
</w:tcBorders>
<w:shd w:val="clear" w:color="auto" w:fill="FFFFFF" />
<w:noWrap />
<w:tcMar>
<w:top w:w="0.4pt" w:type="dxa" />
<w:start w:w="0.4pt" w:type="dxa" />
<w:bottom w:w="0.4pt" w:type="dxa" />
<w:end w:w="0.4pt" w:type="dxa" />
</w:tcMar>
<w:vAlign w:val="bottom" />
<w:hideMark />
</w:tcPr>
<w:p>
<w:pPr>
<w:rPr>
<w:rFonts w:ascii="Calibri" w:eastAsia="Calibri" w:hAnsi="Calibri" w:cs="Calibri" />
<w:b w:val="0" />
<w:bCs w:val="0" />
<w:i w:val="0" />
<w:iCs w:val="0" />
<w:smallCaps w:val="0" />
<w:color w:val="000000" />
<w:sz w:val="22" />
<w:szCs w:val="22" />
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:rFonts w:ascii="Calibri" w:eastAsia="Calibri" w:hAnsi="Calibri" w:cs="Calibri" />
<w:b w:val="0" />
<w:bCs w:val="0" />
<w:i w:val="0" />
<w:iCs w:val="0" />
<w:smallCaps w:val="0" />
<w:color w:val="000000" />
<w:sz w:val="22" />
<w:szCs w:val="22" />
</w:rPr>
<w:t>B</w:t>
</w:r>
</w:p>
</w:tc>
</w:tr>
<w:tr>
<w:tblPrEx>
<w:tblW w:w="95.25pt" w:type="dxa" />
<w:tblInd w:w="0.8pt" w:type="dxa" />
<w:tblCellMar>
<w:top w:w="0pt" w:type="dxa" />
<w:start w:w="0pt" w:type="dxa" />
<w:bottom w:w="0pt" w:type="dxa" />
<w:end w:w="0pt" w:type="dxa" />
</w:tblCellMar>
<w:tblLook w:firstColumn="1" w:firstRow="1" w:lastColumn="1" w:lastRow="1" w:noVBand="1" />
</w:tblPrEx>
<w:trPr>
<w:trHeight w:hRule="exact" w:val="288" />
</w:trPr>
<w:tc>
<w:tcPr>
<w:tcW w:w="48.75pt" w:type="dxa" />
<w:tcBorders>
<w:top w:val="single" w:sz="6" w:space="0" w:color="B6B6B6" />
<w:start w:val="single" w:sz="6" w:space="0" w:color="B6B6B6" />
<w:bottom w:val="single" w:sz="6" w:space="0" w:color="B6B6B6" />
<w:end w:val="single" w:sz="6" w:space="0" w:color="B6B6B6" />
</w:tcBorders>
<w:shd w:val="clear" w:color="auto" w:fill="FFFFFF" />
<w:noWrap />
<w:tcMar>
<w:top w:w="0.4pt" w:type="dxa" />
<w:start w:w="0.4pt" w:type="dxa" />
<w:bottom w:w="0.4pt" w:type="dxa" />
<w:end w:w="0.4pt" w:type="dxa" />
</w:tcMar>
<w:vAlign w:val="bottom" />
<w:hideMark />
</w:tcPr>
<w:p>
<w:pPr>
<w:rPr>
<w:rFonts w:ascii="Calibri" w:eastAsia="Calibri" w:hAnsi="Calibri" w:cs="Calibri" />
<w:b w:val="0" />
<w:bCs w:val="0" />
<w:i w:val="0" />
<w:iCs w:val="0" />
<w:smallCaps w:val="0" />
<w:color w:val="000000" />
<w:sz w:val="22" />
<w:szCs w:val="22" />
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:rFonts w:ascii="Calibri" w:eastAsia="Calibri" w:hAnsi="Calibri" w:cs="Calibri" />
<w:b w:val="0" />
<w:bCs w:val="0" />
<w:i w:val="0" />
<w:iCs w:val="0" />
<w:smallCaps w:val="0" />
<w:color w:val="000000" />
<w:sz w:val="22" />
<w:szCs w:val="22" />
</w:rPr>
<w:t>C</w:t>
</w:r>
</w:p>
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="48.75pt" w:type="dxa" />
<w:tcBorders>
<w:top w:val="single" w:sz="6" w:space="0" w:color="B6B6B6" />
<w:start w:val="single" w:sz="6" w:space="0" w:color="B6B6B6" />
<w:bottom w:val="single" w:sz="6" w:space="0" w:color="B6B6B6" />
<w:end w:val="single" w:sz="6" w:space="0" w:color="B6B6B6" />
</w:tcBorders>
<w:shd w:val="clear" w:color="auto" w:fill="FFFFFF" />
<w:noWrap />
<w:tcMar>
<w:top w:w="0.4pt" w:type="dxa" />
<w:start w:w="0.4pt" w:type="dxa" />
<w:bottom w:w="0.4pt" w:type="dxa" />
<w:end w:w="0.4pt" w:type="dxa" />
</w:tcMar>
<w:vAlign w:val="bottom" />
<w:hideMark />
</w:tcPr>
<w:p>
<w:pPr>
<w:rPr>
<w:rFonts w:ascii="Calibri" w:eastAsia="Calibri" w:hAnsi="Calibri" w:cs="Calibri" />
<w:b w:val="0" />
<w:bCs w:val="0" />
<w:i w:val="0" />
<w:iCs w:val="0" />
<w:smallCaps w:val="0" />
<w:color w:val="000000" />
<w:sz w:val="22" />
<w:szCs w:val="22" />
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:rFonts w:ascii="Calibri" w:eastAsia="Calibri" w:hAnsi="Calibri" w:cs="Calibri" />
<w:b w:val="0" />
<w:bCs w:val="0" />
<w:i w:val="0" />
<w:iCs w:val="0" />
<w:smallCaps w:val="0" />
<w:color w:val="000000" />
<w:sz w:val="22" />
<w:szCs w:val="22" />
</w:rPr>
<w:t>D</w:t>
</w:r>
</w:p>
</w:tc>
</w:tr>
</w:tbl>
<w:p />
<w:sectPr>
<w:pgMar w:header="708" w:footer="708" />
<w:cols w:space="708" />
</w:sectPr>
</w:body>
</w:document>
</pkg:xmlData>
</pkg:part>
<!-- ... -->
</pkg:package>
我设法用这段代码删除了第一个多余的段落:
var paragraphs = myContentControl.paragraphs;
context.load(paragraphs, 'items');
return context.sync().then(function () {
paragraphs.items[0].delete();
return context.sync().then(function () {
console.log("Success");
});
});
但是,如果我尝试删除最后一段,如下一行所示,它会删除内容控件,但不会删除多余的段落。
paragraphs.items[paragraphs.items.length - 1].delete();
如何在不删除内容控件的情况下使用 Office.js 删除最后一个多余的段落?
在所有 "modern" 版本的 Word 中(现代 = 支持文本换行/在页面上自由定位 table 的版本)需要 table 之后的段落。
段落标记在Word中打开XML问题中可见:
</w:tbl>
<w:p />
<w:sectPr>
所以删除这一段是不可能的。
但是,应该可以将其格式化为非常小的字体大小(我记得,Word 支持 .5 pt 作为最小大小),没有 Space 之前或 Space之后.
关于为什么需要段落标记的背景:Word存储table在页面上的位置信息,以及其他一些结构信息"in" 段落标记。我们看不到它,但这就是正在发生的事情 "under the covers"。与 Shape
对象的锚非常相似。
我找到了这个解决方法:直接向文档选择插入一个 Ooxml 字符串,其中还包含内容控件和 table,其中没有段落。
所以,这是代码:
Word.run(function (context) {
context.document.getSelection().insertOoxml(dataXml, 'Start');
return context.sync().then(function () {
console.log("Success");
});
});
这是dataXml
内容的主要部分:
<pkg:package xmlns:pkg="http://schemas.microsoft.com/office/2006/xmlPackage">
<!-- ... -->
<pkg:xmlData>
<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<w:body>
<w:sdt>
<w:sdtPr>
<w:alias w:val="ZZZ"/>
<w:id w:val="0"/>
</w:sdtPr>
<w:sdtEndPr/>
<w:sdtContent>
<w:tbl>
<!-- ... TABLE CONTENT ... -->
</w:tbl>
</w:sdtContent>
</w:sdt>
</w:body>
</w:document>
</pkg:xmlData>
</pkg:part>
</pkg:package>
这是结果:
至少最后一段不在内容控制范围内。
我正在尝试向我的 Word 文档添加一个新的内容控件,其中包含 table。我有 table 的 Ooxml,我将其插入到 insertOoxml
的新内容控件中。但是它在 table 之前添加了一个新段落,在它之后添加了另一个段落,如下图所示。
这是我的代码:
Word.run(function (context) {
var range = context.document.getSelection();
var myContentControl = range.insertContentControl();
myContentControl.title = "ZZZ";
myContentControl.insertOoxml(dataXml, 'end');
myContentControl.cannotEdit = false;
myContentControl.cannotDelete = false;
context.load(myContentControl, 'id, title, tag');
return context.sync().then(function () {
console.log("Success");
});
});
这是dataXml内容的主要部分:
<?mso-application progid="Word.Document"?>
<pkg:package xmlns:pkg="http://schemas.microsoft.com/office/2006/xmlPackage">
<!-- ... -->
<pkg:part pkg:name="/word/document.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml">
<pkg:xmlData>
<w:document xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:cx="http://schemas.microsoft.com/office/drawing/2014/chartex" xmlns:cx1="http://schemas.microsoft.com/office/drawing/2015/9/8/chartex" xmlns:cx2="http://schemas.microsoft.com/office/drawing/2015/10/21/chartex" xmlns:cx3="http://schemas.microsoft.com/office/drawing/2016/5/9/chartex" xmlns:cx4="http://schemas.microsoft.com/office/drawing/2016/5/10/chartex" xmlns:cx5="http://schemas.microsoft.com/office/drawing/2016/5/11/chartex" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://purl.oclc.org/ooxml/officeDocument/relationships" xmlns:m="http://purl.oclc.org/ooxml/officeDocument/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:wp="http://purl.oclc.org/ooxml/drawingml/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://purl.oclc.org/ooxml/wordprocessingml/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup" xmlns:wpi="http://schemas.microsoft.com/office/word/2010/wordprocessingInk" xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape" mc:Ignorable="w14 w15 wp14" w:conformance="strict">
<w:body>
<w:tbl>
<w:tblPr>
<w:tblStyle w:val="table" />
<w:tblW w:w="95.25pt" w:type="dxa" />
<w:tblInd w:w="0.8pt" w:type="dxa" />
<w:tblCellMar>
<w:top w:w="0pt" w:type="dxa" />
<w:start w:w="0pt" w:type="dxa" />
<w:bottom w:w="0pt" w:type="dxa" />
<w:end w:w="0pt" w:type="dxa" />
</w:tblCellMar>
<w:tblLook w:firstColumn="1" w:firstRow="1" w:lastColumn="1" w:lastRow="1" w:noVBand="1" />
</w:tblPr>
<w:tblGrid>
<w:gridCol w:w="952" />
<w:gridCol w:w="953" />
</w:tblGrid>
<w:tr>
<w:tblPrEx>
<w:tblW w:w="95.25pt" w:type="dxa" />
<w:tblInd w:w="0.8pt" w:type="dxa" />
<w:tblCellMar>
<w:top w:w="0pt" w:type="dxa" />
<w:start w:w="0pt" w:type="dxa" />
<w:bottom w:w="0pt" w:type="dxa" />
<w:end w:w="0pt" w:type="dxa" />
</w:tblCellMar>
<w:tblLook w:firstColumn="1" w:firstRow="1" w:lastColumn="1" w:lastRow="1" w:noVBand="1" />
</w:tblPrEx>
<w:trPr>
<w:trHeight w:hRule="exact" w:val="288" />
</w:trPr>
<w:tc>
<w:tcPr>
<w:tcW w:w="48.75pt" w:type="dxa" />
<w:tcBorders>
<w:top w:val="single" w:sz="6" w:space="0" w:color="B6B6B6" />
<w:start w:val="single" w:sz="6" w:space="0" w:color="B6B6B6" />
<w:bottom w:val="single" w:sz="6" w:space="0" w:color="B6B6B6" />
<w:end w:val="single" w:sz="6" w:space="0" w:color="B6B6B6" />
</w:tcBorders>
<w:shd w:val="clear" w:color="auto" w:fill="FFFFFF" />
<w:noWrap />
<w:tcMar>
<w:top w:w="0.4pt" w:type="dxa" />
<w:start w:w="0.4pt" w:type="dxa" />
<w:bottom w:w="0.4pt" w:type="dxa" />
<w:end w:w="0.4pt" w:type="dxa" />
</w:tcMar>
<w:vAlign w:val="bottom" />
<w:hideMark />
</w:tcPr>
<w:p>
<w:pPr>
<w:rPr>
<w:rFonts w:ascii="Calibri" w:eastAsia="Calibri" w:hAnsi="Calibri" w:cs="Calibri" />
<w:b w:val="0" />
<w:bCs w:val="0" />
<w:i w:val="0" />
<w:iCs w:val="0" />
<w:smallCaps w:val="0" />
<w:color w:val="000000" />
<w:sz w:val="22" />
<w:szCs w:val="22" />
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:rFonts w:ascii="Calibri" w:eastAsia="Calibri" w:hAnsi="Calibri" w:cs="Calibri" />
<w:b w:val="0" />
<w:bCs w:val="0" />
<w:i w:val="0" />
<w:iCs w:val="0" />
<w:smallCaps w:val="0" />
<w:color w:val="000000" />
<w:sz w:val="22" />
<w:szCs w:val="22" />
</w:rPr>
<w:t>A</w:t>
</w:r>
</w:p>
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="48.75pt" w:type="dxa" />
<w:tcBorders>
<w:top w:val="single" w:sz="6" w:space="0" w:color="B6B6B6" />
<w:start w:val="single" w:sz="6" w:space="0" w:color="B6B6B6" />
<w:bottom w:val="single" w:sz="6" w:space="0" w:color="B6B6B6" />
<w:end w:val="single" w:sz="6" w:space="0" w:color="B6B6B6" />
</w:tcBorders>
<w:shd w:val="clear" w:color="auto" w:fill="FFFFFF" />
<w:noWrap />
<w:tcMar>
<w:top w:w="0.4pt" w:type="dxa" />
<w:start w:w="0.4pt" w:type="dxa" />
<w:bottom w:w="0.4pt" w:type="dxa" />
<w:end w:w="0.4pt" w:type="dxa" />
</w:tcMar>
<w:vAlign w:val="bottom" />
<w:hideMark />
</w:tcPr>
<w:p>
<w:pPr>
<w:rPr>
<w:rFonts w:ascii="Calibri" w:eastAsia="Calibri" w:hAnsi="Calibri" w:cs="Calibri" />
<w:b w:val="0" />
<w:bCs w:val="0" />
<w:i w:val="0" />
<w:iCs w:val="0" />
<w:smallCaps w:val="0" />
<w:color w:val="000000" />
<w:sz w:val="22" />
<w:szCs w:val="22" />
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:rFonts w:ascii="Calibri" w:eastAsia="Calibri" w:hAnsi="Calibri" w:cs="Calibri" />
<w:b w:val="0" />
<w:bCs w:val="0" />
<w:i w:val="0" />
<w:iCs w:val="0" />
<w:smallCaps w:val="0" />
<w:color w:val="000000" />
<w:sz w:val="22" />
<w:szCs w:val="22" />
</w:rPr>
<w:t>B</w:t>
</w:r>
</w:p>
</w:tc>
</w:tr>
<w:tr>
<w:tblPrEx>
<w:tblW w:w="95.25pt" w:type="dxa" />
<w:tblInd w:w="0.8pt" w:type="dxa" />
<w:tblCellMar>
<w:top w:w="0pt" w:type="dxa" />
<w:start w:w="0pt" w:type="dxa" />
<w:bottom w:w="0pt" w:type="dxa" />
<w:end w:w="0pt" w:type="dxa" />
</w:tblCellMar>
<w:tblLook w:firstColumn="1" w:firstRow="1" w:lastColumn="1" w:lastRow="1" w:noVBand="1" />
</w:tblPrEx>
<w:trPr>
<w:trHeight w:hRule="exact" w:val="288" />
</w:trPr>
<w:tc>
<w:tcPr>
<w:tcW w:w="48.75pt" w:type="dxa" />
<w:tcBorders>
<w:top w:val="single" w:sz="6" w:space="0" w:color="B6B6B6" />
<w:start w:val="single" w:sz="6" w:space="0" w:color="B6B6B6" />
<w:bottom w:val="single" w:sz="6" w:space="0" w:color="B6B6B6" />
<w:end w:val="single" w:sz="6" w:space="0" w:color="B6B6B6" />
</w:tcBorders>
<w:shd w:val="clear" w:color="auto" w:fill="FFFFFF" />
<w:noWrap />
<w:tcMar>
<w:top w:w="0.4pt" w:type="dxa" />
<w:start w:w="0.4pt" w:type="dxa" />
<w:bottom w:w="0.4pt" w:type="dxa" />
<w:end w:w="0.4pt" w:type="dxa" />
</w:tcMar>
<w:vAlign w:val="bottom" />
<w:hideMark />
</w:tcPr>
<w:p>
<w:pPr>
<w:rPr>
<w:rFonts w:ascii="Calibri" w:eastAsia="Calibri" w:hAnsi="Calibri" w:cs="Calibri" />
<w:b w:val="0" />
<w:bCs w:val="0" />
<w:i w:val="0" />
<w:iCs w:val="0" />
<w:smallCaps w:val="0" />
<w:color w:val="000000" />
<w:sz w:val="22" />
<w:szCs w:val="22" />
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:rFonts w:ascii="Calibri" w:eastAsia="Calibri" w:hAnsi="Calibri" w:cs="Calibri" />
<w:b w:val="0" />
<w:bCs w:val="0" />
<w:i w:val="0" />
<w:iCs w:val="0" />
<w:smallCaps w:val="0" />
<w:color w:val="000000" />
<w:sz w:val="22" />
<w:szCs w:val="22" />
</w:rPr>
<w:t>C</w:t>
</w:r>
</w:p>
</w:tc>
<w:tc>
<w:tcPr>
<w:tcW w:w="48.75pt" w:type="dxa" />
<w:tcBorders>
<w:top w:val="single" w:sz="6" w:space="0" w:color="B6B6B6" />
<w:start w:val="single" w:sz="6" w:space="0" w:color="B6B6B6" />
<w:bottom w:val="single" w:sz="6" w:space="0" w:color="B6B6B6" />
<w:end w:val="single" w:sz="6" w:space="0" w:color="B6B6B6" />
</w:tcBorders>
<w:shd w:val="clear" w:color="auto" w:fill="FFFFFF" />
<w:noWrap />
<w:tcMar>
<w:top w:w="0.4pt" w:type="dxa" />
<w:start w:w="0.4pt" w:type="dxa" />
<w:bottom w:w="0.4pt" w:type="dxa" />
<w:end w:w="0.4pt" w:type="dxa" />
</w:tcMar>
<w:vAlign w:val="bottom" />
<w:hideMark />
</w:tcPr>
<w:p>
<w:pPr>
<w:rPr>
<w:rFonts w:ascii="Calibri" w:eastAsia="Calibri" w:hAnsi="Calibri" w:cs="Calibri" />
<w:b w:val="0" />
<w:bCs w:val="0" />
<w:i w:val="0" />
<w:iCs w:val="0" />
<w:smallCaps w:val="0" />
<w:color w:val="000000" />
<w:sz w:val="22" />
<w:szCs w:val="22" />
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:rFonts w:ascii="Calibri" w:eastAsia="Calibri" w:hAnsi="Calibri" w:cs="Calibri" />
<w:b w:val="0" />
<w:bCs w:val="0" />
<w:i w:val="0" />
<w:iCs w:val="0" />
<w:smallCaps w:val="0" />
<w:color w:val="000000" />
<w:sz w:val="22" />
<w:szCs w:val="22" />
</w:rPr>
<w:t>D</w:t>
</w:r>
</w:p>
</w:tc>
</w:tr>
</w:tbl>
<w:p />
<w:sectPr>
<w:pgMar w:header="708" w:footer="708" />
<w:cols w:space="708" />
</w:sectPr>
</w:body>
</w:document>
</pkg:xmlData>
</pkg:part>
<!-- ... -->
</pkg:package>
我设法用这段代码删除了第一个多余的段落:
var paragraphs = myContentControl.paragraphs;
context.load(paragraphs, 'items');
return context.sync().then(function () {
paragraphs.items[0].delete();
return context.sync().then(function () {
console.log("Success");
});
});
但是,如果我尝试删除最后一段,如下一行所示,它会删除内容控件,但不会删除多余的段落。
paragraphs.items[paragraphs.items.length - 1].delete();
如何在不删除内容控件的情况下使用 Office.js 删除最后一个多余的段落?
在所有 "modern" 版本的 Word 中(现代 = 支持文本换行/在页面上自由定位 table 的版本)需要 table 之后的段落。
段落标记在Word中打开XML问题中可见:
</w:tbl>
<w:p />
<w:sectPr>
所以删除这一段是不可能的。
但是,应该可以将其格式化为非常小的字体大小(我记得,Word 支持 .5 pt 作为最小大小),没有 Space 之前或 Space之后.
关于为什么需要段落标记的背景:Word存储table在页面上的位置信息,以及其他一些结构信息"in" 段落标记。我们看不到它,但这就是正在发生的事情 "under the covers"。与 Shape
对象的锚非常相似。
我找到了这个解决方法:直接向文档选择插入一个 Ooxml 字符串,其中还包含内容控件和 table,其中没有段落。
所以,这是代码:
Word.run(function (context) {
context.document.getSelection().insertOoxml(dataXml, 'Start');
return context.sync().then(function () {
console.log("Success");
});
});
这是dataXml
内容的主要部分:
<pkg:package xmlns:pkg="http://schemas.microsoft.com/office/2006/xmlPackage">
<!-- ... -->
<pkg:xmlData>
<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<w:body>
<w:sdt>
<w:sdtPr>
<w:alias w:val="ZZZ"/>
<w:id w:val="0"/>
</w:sdtPr>
<w:sdtEndPr/>
<w:sdtContent>
<w:tbl>
<!-- ... TABLE CONTENT ... -->
</w:tbl>
</w:sdtContent>
</w:sdt>
</w:body>
</w:document>
</pkg:xmlData>
</pkg:part>
</pkg:package>
这是结果:
至少最后一段不在内容控制范围内。