我有一个xml文件,其中只有一个使用reportjs呈现的工作表。这些单独的xml文件中有许多用于生成不同的报告,并且每个文件都有自己的<styleSheet>
标记和一堆重复的代码。
采用以下格式:
<worksheet>
...custom report...
</worksheet>
<styleSheet>
...tonnes of duplicated styling...
</styleSheet>
我想将<styleSheet>
代码拉入一个单独的文件并创建一组标准样式,然后我可以将其导入到每个报告中。
我试过了:
<!DOCTYPE doc [
<!ENTITY customStyles SYSTEM "./style.xml">
]>
&customStyles;
&customStyles
在许多地方没有运气,我也试过使用许多jsreport功能,没有运气。
如何简单地将样式表内联到每个报告中?
这是jsreport asset的任务。将样式表xml作为资源上载,并使用xlsxReplace将其添加到特定模板。
{{#xlsxReplace "xl/styles.xml"}}
{#asset style.xml}}
{{/xlsxReplace}}
{{#xlsxAdd "xl/worksheets/sheet1.xml" "worksheet.sheetData[0].row"}}
<row>
<c t="inlineStr" s="1"><is><t>Hello world</t></is></c>
</row>
{{/xlsxAdd}}
{{{xlsxPrint}}}
操场上的例子可以找到here。
这是我最终做的事情:
我已经在阅读xml文件,获取内容并使用它进行渲染
fs.readFile(templatePath, 'utf8', function(err, content){
...
}
所以我只是将样式提取到一个新文档中,嵌套一些读取文件并连接结果。
fs.readFile(templatePath, 'utf8', function(err, content){
fs.readFile(stylesPath, 'utf8', function(err, styles){
...
content: `${content}{$styles}`
}
}