瀏覽器將數(shù)據(jù)轉(zhuǎn)為excel格式下載是一個(gè)非常常見(jiàn)的需求,一直一來(lái)我都是選sheejs的js-xlsx。作為一個(gè)老牌并且兼容性超強(qiáng),支持格式,支持的規(guī)范超多,還持續(xù)在維護(hù)的excel庫(kù),作為首選當(dāng)然理所當(dāng)然。
新需求
一切的使用都非常的正常,直到最近需要對(duì)excel的樣式進(jìn)行編輯,當(dāng)時(shí)心想這么簡(jiǎn)單的需求,還不簡(jiǎn)單,查查api直接開(kāi)擼不就好了。
然后也順利的找到了文檔中對(duì)加樣式的api介紹。
就是上圖中,cell 單元格里面的s屬性。不過(guò)這里有一個(gè)坑,那就是我摸了黃色的地方,那就是這個(gè)屬性不是所有的版本都支持的。只有支持的版本,該屬性才會(huì)生效。
社區(qū)版/Pro版
在官網(wǎng)http://sheetjs.com/里我們可以看到,這里簡(jiǎn)單的介紹了下社區(qū)版和pro版。重要的一點(diǎn)是,Pro版的收費(fèi)價(jià)格并沒(méi)有給出,只說(shuō)了需要pro版的話請(qǐng)郵件聯(lián)系他們。
接著我郵件聯(lián)系了下嘗試詢(xún)問(wèn)了下pro版的價(jià)格:
簡(jiǎn)單來(lái)說(shuō)呢,其實(shí)pro版還細(xì)分了很多的部分,你可以理解為不同特性的分支。然后還付了一個(gè)pdf給我,里面介紹了不同版本支持的不同特性有哪些。
價(jià)格
上上個(gè)圖也有提到,影響最終的價(jià)格包括who.what,where。然后,我的需求呢主要是有兩個(gè),一個(gè)是樣式的支持,另一個(gè)是插入圖片(并帶超鏈接)。然后我把需求發(fā)過(guò)去之后,sheejs給了我的價(jià)格是 $750一個(gè)license。
緣由
翻了下issue我發(fā)現(xiàn)很久前也有人問(wèn)到官方為什么style那部分的功能社區(qū)版不開(kāi)放出來(lái)。官方回復(fù)說(shuō),因?yàn)橛械墓靖读速M(fèi)讓他們開(kāi)發(fā)這部分的功能,所以如果這功能再免費(fèi)出來(lái)會(huì)對(duì)這些公司造成不公。https://github.com/SheetJS/js-xlsx/issues/642#issuecomment-390502183
xlsx-style 庫(kù) or 魔改
很早前有人就fork了一份出來(lái)對(duì)樣式進(jìn)行實(shí)現(xiàn)。也就是xlsx-style github。實(shí)測(cè)代碼還是能有用的,并且核心代碼就那兩段,完全拿出來(lái)放到最新的官方庫(kù)代碼里進(jìn)行魔改也是能正常使用樣式的。不過(guò)一方面這個(gè)庫(kù)的代碼幾年沒(méi)繼續(xù)維護(hù)包括還有很多功能如果繼續(xù)用js-xlsx的話還是繞不過(guò)去,總不能每出新的需求,就自己寫(xiě)魔改的方法吧…當(dāng)前如此快速的研發(fā)周期不是很允許我這么做…
最終方案
先說(shuō)我的處理方案吧,我是直接換庫(kù)了,目前用的是exceljs。。。750刀確實(shí)還是貴了點(diǎn)。
途中要感謝一位網(wǎng)友熱心網(wǎng)友 嗯哼,我在相關(guān)js-xlsx問(wèn)題下進(jìn)行討論的時(shí)候,這位熱心小兄弟還幫我找了幾個(gè)excel庫(kù)。并且實(shí)測(cè)了幾個(gè)之后,選了個(gè)最能滿足需求的庫(kù)exceljs,非常感謝!
該文章在 2023/3/27 18:42:26 編輯過(guò)