有没有一种方法可以在段落中的字符之间添加制表符?

时间:2018-07-10 16:58:01

标签: javascript ms-word office-js

我创建了一个应用程序,该应用程序可对字母进行模板处理,并希望在底部获取CC值以正确排列。上图显示foo行与bar行不是完全完整的字符。

enter image description here

foo行使用以下命令完成:

paragrapgh.insertHtml('<div>CC:&emsp;&emsp;foo</div>');

条形线是它自己的段落,因此我可以使用以下方法获得适当的制表符间距: secondParagraph.leftIndent = 36;

是否可以使用office.js在字符之间设置适当的制表符缩进?从我在文档leftIndent中看到的内容看,这似乎是唯一的选择,但这仅适用于段落本身,而不适用于文本之间。

任何帮助将不胜感激,谢谢!

更新

我已经尝试过了:

paragrapgh.insertHtml('<div>CC:\tfoo</div>');

Word将\t视为一个空格而不是一个制表符。

2 个答案:

答案 0 :(得分:1)

以下Office JS代码(来自Script Lab)适用于我在桌面上。它使用标准的最小Word Open XML来插入(代替当前选择)带有左对齐制表位的段落。然后,它会使用制表符将文本写到文档中,以使文本对齐。

请注意,由于Word On-line不支持制表符和制表符,因此将在Word Online中运行,但是效果会有所不同(不对齐)。

//create paragraph with tab stops and tabs
async function run() {
    await Word.run(async (context) => {
        let sXml = '<pkg:package xmlns:pkg="http://schemas.microsoft.com/office/2006/xmlPackage"><pkg:part pkg:name="/_rels/.rels" pkg:contentType="application/vnd.openxmlformats-package.relationships+xml" pkg:padding="512"><pkg:xmlData><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="word/document.xml"/></Relationships></pkg:xmlData></pkg:part><pkg:part pkg:name="/word/document.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"><pkg:xmlData><w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"><w:body><w:p><w:pPr><w:tabs><w:tab w:val="left" w:pos ="851"/></w:tabs></w:pPr><w:r><w:t></w:t></w:r></w:p></w:body></w:document></pkg:xmlData></pkg:part></pkg:package>';

        //console.log("XML: " + sXml);
        let para = context.document.getSelection();
        para.insertOoxml(sXml, "Replace");
        para.insertText("CC:\tPerson1\n\tPerson2", "Start");
        await context.sync();
    });
}

结果看起来像这样

enter image description here

Word Open XML中带有制表位的段落的相关部分:

<w:body>
<w:p><w:pPr><w:tabs><w:tab w:val="left" w:pos ="851"/></w:tabs></w:pPr><w:r><w:t></w:t></w:r></w:p>
</w:body>

答案 1 :(得分:-1)

使用转义符(在这种情况下为'\ t')

context.document.body.insertParagraph("check out how to tab next word: Hell\to tab!", "end");