JSFiddle - React, Tailwind, and code Playground
by Rambabu Pudi
HTML
<script src="https://unpkg.com/[email protected]/dist/xlsx.full.min.js"></script>
<script src="https://unpkg.com/[email protected]/FileSaver.js"></script>
JavaScript
/* notice the hole where cell "B1" would be */
var data = [
["Merged", "", "C", "D"],
[1,2,3,40000000],
[2,3,4,5000],
["a","b","c","d"]
];
/* merge cells A1:B1 */
var merge = { s: {r:0, c:0}, e: {r:0, c:1} };
//var merge = XLSX.utils.decode_range("A1:B1"); // this is equivalent
/* generate worksheet */
var ws = XLSX.utils.aoa_to_sheet(data);
/* add merges */
if(!ws['!merges']) ws['!merges'] = [];
ws['!merges'].push(merge);
/* new format */
var fmt = "#,##0.##";
/* change cell format of range B2:D4 */
var range = { s: {r:1, c:1}, e: {r:2, c:3} };
for(var R = range.s.r; R <= range.e.r; ++R) {
for(var C = range.s.c; C <= range.e.c; ++C) {
var cell = ws[XLSX.utils.encode_cell({r:R,c:C})];
if(!cell || cell.t != 'n') continue; // only format numeric cells
cell.z = fmt;
}
}
/* generate workbook */
var wb = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(wb, ws, "sheet1");
/* generate file and download */
const wbout = XLSX.write(wb, { type: "array", bookType: "xlsx" });
saveAs(new Blob([wbout], { type: "application/octet-stream" }), "issue966.xlsx");