3

我有一个对象数组,将通过 DocXTemplater 导出到 word 文档

样本数组

[
{Name:"jon doe",age:27}
{Name:"joe roe",age:27,Address:"new jersey"}
]

现在 DocXTemplate 将是

{#arrayVarName}{Name},{age},{Address}{/arrayVarName}

这将输出,

Jon,27,undefined
Joe,27,new jersey

现在我想过滤所有未定义并用空字符串或一些自定义字符串替换它们,这如何在 DocXTemplater 中完成,或者对象数组中的所有未定义都可以替换为自定义字符串?

4

4 回答 4

6

您现在可以全局自定义此设置:

https://github.com/open-xml-templating/docxtemplater/blob/bf51212c9821e40a9c3d18235427796df64d6bcb/docs/source/configuration.rst#nullgetter

doc=new DocxGen(content);
doc.setOptions({nullGetter: function() {
   return ""; 
}});
于 2016-07-18T09:21:43.243 回答
4

由于 Docxtemplater V4,你不应该使用这个:

doc.setOptions({...})

相反,您应该在文档构建期间指定选项:

const doc = new Docxtemplater(zip, {nullGetter() { return ''; }});
于 2020-07-15T16:08:16.857 回答
2

使用角度解析器消除未定义或空值

expressions= require('angular-expressions')
angularParser= function(tag){
    expr=expressions.compile(tag);
    return {get:expr};
}

使用以下代码设置解析器

    doc=new DocxGen(content)
    doc.setOptions({parser:angularParser})

在模板中使用下面的代码

{#value!=undefined}{value}{/value!=undefined}
于 2016-05-12T09:24:15.080 回答
1

我试图用 doc.setOptions() 处理它但有这个错误:

使用 v4 构造函数时不应手动调用 setOptions()

我必须做的是更改这部分代码以显示空白而不是未定义:

doc=new window.docxtemplater(zip, {nullGetter() { return ''; }});

感谢Dorpaxio。但就我而言,它不适用于:

const doc = new Docxtemplater();
于 2021-03-16T12:26:11.783 回答