目标:
提供一组数据(包括图片),要能在前端或者用node生成一个excel表格。
解决方案:
A:js-xlsx
下载量最多,更新最频繁,但是不支持图片导入。
介绍:https://www.npmjs.com/package/xlsx,https://segmentfault.com/a/1190000011057149
源码:https://github.com/tealeg/xlsx
相关教程:https://www.jianshu.com/p/74d405940305
B:ActiveXObject
只支持IE。
ExcelJS
只能用在node环境中。
经过调研发现:前端的处理能力有限,最好还是通过node来调用,在后端操作excel。只能操作csv和xlsx。
node操作excel的库目前这个库下载量最多,更新最频繁。
介绍:https://www.npmjs.com/package/exceljs#images
源码:https://github.com/guyonroche/exceljs#readme
D:其它框架
1.wijmo:
收费
介绍:https://www.cnblogs.com/bubugao/p/js4.html
2.spreadjs:
收费,主要功能是把excel嵌入到页面里,和目前的功能不匹配
介绍:https://www.grapecity.com.cn/developer/spreadjs
3.excel4node:
Excel的node小型框架,使用没有ExcelJs广泛,但是功能没有ExcelJs强大。
介绍:https://www.npmjs.com/package/excel4node
E:不使用框架,纯前端实现
Excel表格最终是xls(实际上是html table写成xls的格式)格式,可以实现图片的导入和样式的操作,但是图片的导入方式有本地图片资源的引入和直接赋值网站链接。
这两种图片导入方式都进行了测试,发现只有在启用编辑的时候图片才可以显示出来,否则显示不出来。Excel不信任图片的来源。
参考案例:https://blog.csdn.net/xiaoxiaojie12321/article/details/81780900
总结
最终打算采用ExcelJS,把数据发到node服务器,在node服务器端生成Excel表格,返回给前端使用。相关代码链接:https://github.com/wangyiman/handle_office_service
问题
node是在后端申请了一个虚拟机器,所以要保证所用到的框架不能对windows的excel产生依赖,万一出现了依赖,很可能跨平台就不支持了。
目前调研结果是excel4node可以跨平台,但是ExcelJS不能保证是否可以支持跨平台。
相关链接:
网友评论