当前位置: 首页 > 知识库问答 >
问题:

使用变量替换在docx4j中插入换行符

车明贤
2023-03-14

这就是我现在的代码,我试着放入“\n”、“
”和“ ”,但都不起作用,现在我放入“\n”只是为了明确我想在哪里换行:

private String criaIdentificacaoAssistenciaSocial(Lote lote) throws IOException {
    StringBuilder identificacaoAS = new StringBuilder();
    for (Pessoa pessoa : lote.getJsonBeneficiarios()) {
        PessoaFisica beneficiario = (PessoaFisica) pessoa;
        identificacaoAS.append(beneficiario.getNome()).append(", CPF ").append(beneficiario.getCpf());
        identificacaoAS.append("\n");
        if (beneficiario.getConjuge() != null) {
            identificacaoAS.append(beneficiario.getConjuge().getNome()).append(", CPF ").append(beneficiario.getConjuge().getCpf());
            identificacaoAS.append("\n");
        }
    }
    return identificacaoAS.toString();
}

我的返回值放在mappingDocsVariable中,然后用以下代码生成docx文件:

private File geraDocumento(HashMap<String, String> mappingDocVariables, String nomeDocx) throws Exception {
    String inputfilepath = System.getProperty("user.dir") + File.separator
            + "utils" + File.separator + nomeDocx + ".docx";

    WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(new java.io.File(inputfilepath));
    MainDocumentPart documentPart = wordMLPackage.getMainDocumentPart();
    VariablePrepare.prepare(wordMLPackage);
    documentPart.variableReplace(mappingDocVariables);
    String tDir = System.getProperty("java.io.tmpdir");
    File temp = new File(tDir + nomeDocx + ".docx");
    Docx4J.save(wordMLPackage, temp);
    temp.deleteOnExit();
    return temp;
}

共有1个答案

颛孙飞鸾
2023-03-14

参见https://github.com/plutext/docx4j/blob/master/docx4j-samples-docx4j/src/main/java/org/docx4j/sample/variableReplace.java#l122

以前在docx4j中的VariableReplace中插入换行符时回答

 类似资料:
  • 有没有办法做到这一点?

  • 在新的DOCX中,我的XML如下所示: 所以我不知道如何将第二行设置到第一行的相同位置?

  • 我一直试图填充一个word模板(.docx)文件,其中有需要替换的占位符。 我能够重写模板,但是文本没有换行符,我知道回车或新行(\r\n)在.docx文件中不起作用。我使用VariableReplace方法进行转换,但是在使用变量replace时无法放置br或factory.createbr()。 任何建议都会很有帮助。下面是我尝试的一段代码

  • 我正在使用SQL Developer并编写此PL/SQL代码。但当我给B作为选项时,我得到了一个错误。请帮忙。 错误报告:

  • 问题内容: 我怎样才能做到这一点? 它将替换为文本。但是我想用变量的内容替换它。 我尝试过 它也不起作用。 问题答案: 您需要使用双引号: 您的单引号可防止将shell变量替换为其内容。

  • 我有一些占位符的docx文档。现在我应该用其他内容替换它们,并保存新的docx文档。我从docx4j开始,发现了这个方法: 但这很少起作用,因为通常占位符会在多个文本运行中拆分。 如何解决这个问题?