Docx TableWith FieldsMetadata 和 Velocity

Docx TableWith FieldsMetadata and Velocity

我正在尝试使用 FieldsMetadata 和 Velocity 制作一个 docx table,但在输出文件中,table 的每个单元格都包含列表本身,而不是单元格的值。

这是我的代码:

// Build Docx
private fun buildDocxReport(): SystemFile {
    try {
        val resource = this.javaClass.classLoader.getResourceAsStream("reports/code.docx")

        val report = XDocReportRegistry.getRegistry().loadReport(resource, TemplateEngineKind.Velocity)

        val metadata = report.createFieldsMetadata()
        metadata.load("codes", Code::class.java, true)
       

        val context = report.createContext()
        context.put("codes", getAllCodes()); // getAllCodes() : return Listof<Code>

        val tempFile = File.createTempFile("${DateUtil.format(Date(), "yyyyMMdd")}_${IDs.short()}", ".docx")
        val fos = FileOutputStream(tempFile)

        // convert to pdf
        //val options = Options.getTo(ConverterTypeTo.PDF).via(ConverterTypeVia.XWPF)
        //report.convert(context, options, fos)

        report.process(context, fos)
        fos.close()

        return SystemFile(tempFile).attach(tempFile.name)

    } catch (e: Throwable) {
        e.printStackTrace()
        throw FunctionalException("Impossible de gérer le document. Une erreur s'es produite.")
    }

}

我的class代码:

data class Code (
val code: String,
val libelle: String,
val base: String,
val taux: String? = "",
val gain: String? = "",
val retenue: String? = "")

这是我的模板: code.docx

这里是我的输出文档:

listeCode.docx

这是因为单元格没有在模板文件中键入 MergedField。