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");