【问题标题】:Using loop to add to docx.js Document使用循环添加到 docx.js 文档
【发布时间】:2022-10-09 11:33:36
【问题描述】:

我正在使用 docx.js 从输入到 textarea 的文本创建 Word 文档。我创建了一个数组(arrayOfLines),它在每一行拆分 textarea 内容。

我现在想使用循环函数将此数组添加到 Document 中,而我使用的代码似乎不起作用。希望有人可以提供帮助,因为到目前为止我在这里找不到很多答案。抱歉,如果我不清楚,这是我的第一个问题。谢谢你。

    saveEssay () {
   var arrayOfLines = document.getElementById('textArea').value.split('\n');
    

    const buildParagraph = async()=>{
      let paragraphArray = []
      for (var i = 0; i < arrayOfLines.length; i++){
        paragraphArray.push(new Paragraph({text: arrayOfLines[i].text }))
      }
    return paragraphArray;
  };


    let doc = new Document({
    sections: [
      {
        headers: {
                default: new Header({
                    children: [new Paragraph("Page heading")],
                }),
            },
        children: [
          new Paragraph({ text: "My Essay", heading: HeadingLevel.HEADING_2 }),
          buildParagraph() // paragraphs are not coming through 
        ]
      }
    ]
  });
}

【问题讨论】:

  • 我看不出你的 buildParagraph 函数被声明为async 的任何特殊原因。您是否尝试过使用常规(非异步)函数?
  • 我复制并粘贴了另一个答案中推荐的异步函数,但是将其更改为常规函数并没有产生成功的输出,我不知道为什么,还有其他想法吗?感谢您的回复。

标签: javascript loops docx


【解决方案1】:

根据您的帖子,您基本上应该进行两个更正:

  1. arrayOfLines 项已经是一个文本字符串:
    paragraphArray.push(new Paragraph({text: arrayOfLines[i]}))
    
    1. buildParagraph() 函数的返回应该被扩展:
    children: [
        new docx.Paragraph({ text: 'My Essay', heading: docx.HeadingLevel.HEADING_2 }),
        ...buildParagraph(),
    ],
    

    如果有人需要,这是您的情况下的在线代码笔演示:D

    https://codepen.io/DearVikki/pen/XWqxyYZ

【讨论】:

    猜你喜欢
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 2014-07-26
    • 1970-01-01
    • 1970-01-01
    • 2013-08-03
    • 2019-05-11
    • 2019-05-28
    相关资源
    最近更新 更多