要求是导出一个excel文件(*.xlsx)从ui-grid与一些格式。我可以使用angularjs,ui-grid和js-xlsx导出excel,但是我无法设置excel单元格的格式(例如:粗体,文本颜色)和js-xlsx。
我找到了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');有没有什么方法可以在不需要(‘’)的情况下包含和创建它。
如果不能做到这一点,我将感谢任何其他的解决方案/建议。
发布于 2017-09-08 03:28:26
在代码中快速搜索后,我找到了this。此库正在使用文件读/写,因此您无法在浏览器中使用它。另一方面,Excel文件是xml的压缩文件,所以如果没有服务器端的帮助或第三方服务,你永远不会实现你想要的。
发布于 2020-05-08 15:12:20
您需要的是一个捆绑的exceljs构建,它全局地公开独立的ExcelJS对象(通过window)。这也正是您所拥有的,除了您引用了一个无效的名称。
var workbook = new ExcelJS.Workbook();此外,由于您并没有在javascript项目中真正使用模块绑定器,而不是通过npm install获取exceljs捆绑的发行版并从node_modules中提取它,更好的方法是从releases列表中下载并自己构建项目-
$ cd exceljs
$ npm install
$ npm run build之后,您可以在dist目录下获得exceljs.js和它的缩小版对应的exceljs.min.js。
编辑:另外,我不同意Adam的观点。ExcelJS确实可以用于在浏览器端生成ExcelJS表格,并且非常适合您提到的用例。我们使用的方法之一是使用我们拥有的数据动态构造ExcelJS.Workbook,将工作簿写入buffer,使用以下命令将其转换为blob -
new Blob([buffer], { type: buffer.type })然后使用ObjectURLs下载。
https://stackoverflow.com/questions/46103647
复制相似问题