【问题标题】:OpenXML import xml stylesheet into xml worksheet?OpenXML 将 xml 样式表导入 xml 工作表?
【发布时间】:2018-03-01 01:39:19
【问题描述】:

我有一个 xml 文件,其中只有一个工作表,它正在使用 reportjs 呈现。对于正在生成的不同报告,有许多单独的 xml 文件,每个文件都有自己的 <styleSheet> 标记和一堆重复的代码。

采用这种格式:

<worksheet>
   ...custom report...
</worksheet>
<styleSheet>
   ...tonnes of duplicated styling...
</styleSheet>

我想将 &lt;styleSheet&gt; 代码提取到一个单独的文件中,并创建一组标准样式,然后我可以将其导入到每个报告中。

我试过了:

<!DOCTYPE doc [
<!ENTITY customStyles SYSTEM "./style.xml">
]>
&customStyles;

&amp;customStyles 在很多地方都没有运气,我也尝试过使用许多 jsreport 功能但没有运气。

如何简单地将样式表内联导入到每个报告中?

【问题讨论】:

    标签: xml openxml worksheet jsreport


    【解决方案1】:

    这是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找到。

    【讨论】:

    • xl/styles.xml 甚至在项目中都不存在,所以我要替换什么?
    • 解压xlsx文件可以找到这个文件。它也是配方使用的默认 xlsx 模板的一部分。
    【解决方案2】:
    1. 您需要加载已加载的源文件。
    2. 为该文件创建一个单独的样式表并将其保存到工作表中。
    3. 将单个样式应用到您的单元格。

    【讨论】:

    • 虽然这可能是解决问题的宝贵提示,但一个好的答案也可以证明解决方案。请edit 提供示例代码来说明您的意思。或者,考虑将其写为评论。
    【解决方案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}`
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-29
      • 2018-05-06
      • 1970-01-01
      相关资源
      最近更新 更多