Javascript output to excel with color or style(xlsx-style)

starzodiac
2 min readDec 11, 2020

--

因為公司最近把 github BANG 掉了,紀錄一下 google cache 中還可以撈到的相關資料

xlsx-style 是 sheet-js(js-xlsx) 正式版以前的一個 branch,但是很多功能在 sheet-js 1.0 版後都要付費解鎖(作者在很多 feature list 上都有罐頭回覆),目前看來沒有人再繼續維護 xlsx-style 這個 branch 了。

之前想要 create 新的 workbook 來 output 結果,發現官方文件竟然連怎麼 create 都沒有教...而且不知道是我對 JS 的生態不熟,還是這東西太實驗了,最後發現 workbook 是要自己去建立的資料結構,太逆向工程了吧...

以下提供 Issue list 的一個很簡潔的範例:

var wb = {};
wb.Sheets = {};
wb.SheetNames = [];
/* bookType can be 'xlsx' or 'xlsm' or 'xlsb' */
var wopts = { bookType: 'xlsx', bookSST: false, type: 'binary' };
var ws = { '!ref': "A1:F220" };
ws['A1'] = { h: "test", r: "<t>test</t>", t: "s", v: "test", w: "test" }
wb.SheetNames.push('testSheet');
wb.Sheets['testSheet'] = ws;
var wbout = XLSX.write(wb, wopts);function s2ab(s) {
var buf = new ArrayBuffer(s.length);
var view = new Uint8Array(buf);
for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
return buf;
}
saveAs(new Blob([s2ab(wbout)], { type: "" }), "test.xlsx");

然後這套件麻煩的地方還有 v1.0 以前是用 XLSX.write,但是 V1.0 以後是用 XLSX.writeFile,詳情可以看這裡

總之,整個套件大概是 2017 年發布 v1.0,如果是要查 xlsx-style 的相關資訊要去看 2017 年份的討論內容。

--

--

No responses yet