处理docXTemplater或javascript对象数组中的未定义值

时间:2016-05-12 06:40:35

标签: javascript docxtemplater

我有一个对象数组,将通过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 个答案:

答案 0 :(得分:2)

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

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

doc=new DocxGen(content);
doc.setOptions({nullGetter: function() {
   return ""; 
}});

答案 1 :(得分:1)

使用角度解析器消除undefined或null

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}

答案 2 :(得分:1)

我试图用 doc.setOptions() 处理它,但出现了这个错误:

<块引用>

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

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

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

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

const doc = new Docxtemplater();

答案 3 :(得分:0)

自Docxtemplater V4起,您不应使用此:

doc.setOptions({...})

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

const doc = new Docxtemplater(zip, {nullGetter() { return ''; }});