【问题标题】:ExcelJS in coldfusion Project冷融合项目中的 ExcelJS
【发布时间】:2017-09-07 19:18:04
【问题描述】:

要求是从 ui-grid 导出一个带有一些格式的 excel 文件(*.xlsx)。我可以使用 angularjs、ui-grid 和 js-xlsx 导出 excel,但是我无法使用 js-xlsx 格式化 excel 单元格(例如粗体、文本颜色)。

我找到了 Exceljs,它看起来很有希望满足我的要求。困难在于它可以作为 npm 包使用,而我正在使用的服务器没有安装 node/npm。或者,我无法找到相同的下载/cdn。所以我已经在本地系统上安装了这个包,并从 node_modules 复制了文件夹 exceljs 并尝试了以下操作:

<script src="dist/exceljs.js"></script>

<script>
        var workbook = new Excel.Workbook();
        console.log(workbook);
</script>

它抛出一个错误“Uncaught ReferenceError: Excel is not defined”。

我猜是因为它应该作为节点模块包含在“Excel”对象中。

var Excel = require('exceljs');

有什么方法可以在不需要 require('') 的情况下包含和创建它。

如果无法完成,我会感谢任何其他解决方案/建议。

【问题讨论】:

    标签: javascript exceljs


    【解决方案1】:

    在代码中快速搜索后,我找到了this。该库正在使用文件读取/写入,因此您无法在浏览器中使用它。 另一方面,Excel 文件是 xml 的 zip 存档,因此如果没有服务器端帮助或第三部分服务,您将永远无法实现您想要的。

    【讨论】:

    • 谢谢你的回复,我想我得找点别的了。
    【解决方案2】:

    您想要的是 exceljs 的捆绑构建,它全局公开独立的 ExcelJS 对象(通过window)。这正是您所拥有的,只是您使用无效名称引用它。

    var workbook = new ExcelJS.Workbook();
    

    此外,由于您并没有真正在 javascript 项目中使用模块捆绑器,而不是通过 npm install 获取捆绑分发的 exceljs 并从 node_modules 中提取它,因此更好的方法是从他们的releases 列表并自己构建项目 -

    $ cd exceljs
    $ npm install
    $ npm run build
    

    您可以同时获得exceljs.js 和缩小版exceljs.min.js,在dist 目录下可用。

    编辑:另外,我不同意 Adam 的观点。 ExcelJS 确实可以用于在浏览器端生成 excelsheets,非常适合您提到的用例。我们使用的一种方法是使用我们拥有的数据动态构建 ExcelJS.Workbook,将工作簿写入 buffer,然后使用 -

    将其转换为 blob
    new Blob([buffer], { type: buffer.type })
    

    然后使用ObjectURLs下载。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-18
      • 2011-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多