2

要求是从 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>

它抛出错误“未捕获的 ReferenceError:Excel 未定义”。

我猜它是因为它应该作为节点模块包含在“Excel”对象可用的地方。

var Excel = require('exceljs');

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

如果无法完成,我将不胜感激任何其他解决方案/建议。

4

2 回答 2

1

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

于 2017-09-07T19:28:26.347 回答
0

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

var workbook = new ExcelJS.Workbook();

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

$ cd exceljs
$ npm install
$ npm run build

在此之后,您可以获得两者,并且它是目录下可用exceljs.js的缩小版。exceljs.min.jsdist

编辑:另外,我不同意亚当在这里。ExcelJS 确实可以用于在浏览器端生成 excelsheets,非常适合您提到的用例。我们使用的一种方法是使用我们拥有的数据动态构造 ExcelJS.Workbook,将工作簿写入缓冲区,然后使用 - 将其转换为 blob -

new Blob([buffer], { type: buffer.type })

然后使用ObjectURLs下载它。

于 2020-05-08T07:12:20.023 回答