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