OpenXML 将 xml 样式表导入 xml 工作表?

OpenXML import xml stylesheet into xml worksheet?

我有一个 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}}}

可以找到 playground 示例 here

  1. 您需要加载您加载的源文件。
  2. 为该文件创建一个单独的样式sheet并将其保存到sheet。
  3. 将单独的样式应用到您的单元格。

这是我最后做的:

我已经在读取 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}`
    }
}