目標(biāo):
提供一組數(shù)據(jù)(包括圖片),要能在前端或者用node生成一個(gè)excel表格。
解決方案:
A:js-xlsx
下載量最多,更新最頻繁,但是不支持圖片導(dǎo)入。
介紹:https://www.npmjs.com/package/xlsx,https://segmentfault.com/a/1190000011057149
源碼:https://github.com/tealeg/xlsx
相關(guān)教程:http://www.itdecent.cn/p/74d405940305
B:ActiveXObject
只支持IE。
ExcelJS
只能用在node環(huán)境中。
經(jīng)過調(diào)研發(fā)現(xiàn):前端的處理能力有限,最好還是通過node來調(diào)用,在后端操作excel。只能操作csv和xlsx。
node操作excel的庫目前這個(gè)庫下載量最多,更新最頻繁。
介紹:https://www.npmjs.com/package/exceljs#images
源碼:https://github.com/guyonroche/exceljs#readme
D:其它框架
1.wijmo:
收費(fèi)
介紹:https://www.cnblogs.com/bubugao/p/js4.html
2.spreadjs:
收費(fèi),主要功能是把excel嵌入到頁面里,和目前的功能不匹配
介紹:https://www.grapecity.com.cn/developer/spreadjs
3.excel4node:
Excel的node小型框架,使用沒有ExcelJs廣泛,但是功能沒有ExcelJs強(qiáng)大。
介紹:https://www.npmjs.com/package/excel4node
E:不使用框架,純前端實(shí)現(xiàn)
Excel表格最終是xls(實(shí)際上是html table寫成xls的格式)格式,可以實(shí)現(xiàn)圖片的導(dǎo)入和樣式的操作,但是圖片的導(dǎo)入方式有本地圖片資源的引入和直接賦值網(wǎng)站鏈接。
這兩種圖片導(dǎo)入方式都進(jìn)行了測試,發(fā)現(xiàn)只有在啟用編輯的時(shí)候圖片才可以顯示出來,否則顯示不出來。Excel不信任圖片的來源。
參考案例:https://blog.csdn.net/xiaoxiaojie12321/article/details/81780900
總結(jié)
最終打算采用ExcelJS,把數(shù)據(jù)發(fā)到node服務(wù)器,在node服務(wù)器端生成Excel表格,返回給前端使用。相關(guān)代碼鏈接:https://github.com/wangyiman/handle_office_service
問題
node是在后端申請了一個(gè)虛擬機(jī)器,所以要保證所用到的框架不能對windows的excel產(chǎn)生依賴,萬一出現(xiàn)了依賴,很可能跨平臺就不支持了。
目前調(diào)研結(jié)果是excel4node可以跨平臺,但是ExcelJS不能保證是否可以支持跨平臺。
相關(guān)鏈接: