diff --git a/browser_example-simple.html b/browser_example-simple.html
new file mode 100644
index 0000000..00b5ae1
--- /dev/null
+++ b/browser_example-simple.html
@@ -0,0 +1,708 @@
+
+
+
+
+
+
+ SheetJS JS-XLSX In-Browser HTML Table Export Demo
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/example-4.js b/example-4.js
new file mode 100644
index 0000000..acc85c5
--- /dev/null
+++ b/example-4.js
@@ -0,0 +1,642 @@
+var XLSX = require('xlsx');
+var OUTFILE = '/tmp/example-style.xlsx';
+
+function JSDateToExcelDate(inDate) {
+ return 25569.0 + ((inDate.getTime() - (inDate.getTimezoneOffset() * 60 * 1000)) / (1000 * 60 * 60 * 24));
+}
+
+var defaultCellStyle = { font: { name: "Verdana", sz: 11, color: "FF00FF88"}, fill: {fgColor: {rgb: "FFFFAA00"}}};
+
+// test to see if everything on the left equals its counterpart on the right
+// but the right hand object may have other attributes which we might not care about
+function basicallyEquals(left, right) {
+ if (Array.isArray(left) && Array.isArray(right)) {
+ for (var i = 0; i < left.length; i++) {
+ if (!basicallyEquals(left[i], right[i])) {
+ return false;
+ }
+ }
+ return true;
+ }
+ else if (typeof left == 'object' && typeof right == 'object') {
+ for (var key in left) {
+ if (key != 'bgColor') {
+ if (!basicallyEquals(left[key], right[key])) {
+ if (JSON.stringify(left[key]) == "{}" && right[key] == undefined) return true;
+ if (JSON.stringify(right[key]) == "{}" && left[key] == undefined) return true;
+ return false;
+ }
+ }
+ }
+ return true;
+ }
+ else {
+ if (left != right) {
+ return false;
+ }
+ return true;
+ }
+}
+
+
+var workbook, wbout, wbin;
+
+workbook = {
+ "SheetNames": [
+ "Main"
+ ],
+ "Sheets": {
+ "Main": {
+ "!merges": [
+ {
+ "s": {
+ "c": 0,
+ "r": 0
+ },
+ "e": {
+ "c": 2,
+ "r": 0
+ }
+ }
+ ],
+ "A1": {
+ "v": "This is a submerged cell",
+ "s": {
+ "border": {
+ "left": {
+ "style": "thick",
+ "color": {
+ "auto": 1
+ }
+ },
+ "top": {
+ "style": "thick",
+ "color": {
+ "auto": 1
+ }
+ },
+ "bottom": {
+ "style": "thick",
+ "color": {
+ "auto": 1
+ }
+ }
+ }
+ },
+ "t": "s"
+ },
+ "B1": {
+ "v": "Pirate ship",
+ "s": {
+ "border": {
+ "top": {
+ "style": "thick",
+ "color": {
+ "auto": 1
+ }
+ },
+ "bottom": {
+ "style": "thick",
+ "color": {
+ "auto": 1
+ }
+ }
+ }
+ },
+ "t": "s"
+ },
+ "C1": {
+ "v": "Sunken treasure",
+ "s": {
+ "border": {
+ "right": {
+ "style": "thick",
+ "color": {
+ "auto": 1
+ }
+ },
+ "top": {
+ "style": "thick",
+ "color": {
+ "auto": 1
+ }
+ },
+ "bottom": {
+ "style": "thick",
+ "color": {
+ "auto": 1
+ }
+ }
+ }
+ },
+ "t": "s"
+ },
+ "A2": {
+ "v": "Blank",
+ "t": "s"
+ },
+ "B2": {
+ "v": "Red",
+ "s": {
+ "fill": {
+ "fgColor": {
+ "rgb": "FFFF0000"
+ }
+ }
+ },
+ "t": "s"
+ },
+ "C2": {
+ "v": "Green",
+ "s": {
+ "fill": {
+ "fgColor": {
+ "rgb": "FF00FF00"
+ }
+ }
+ },
+ "t": "s"
+ },
+ "D2": {
+ "v": "Blue",
+ "s": {
+ "fill": {
+ "fgColor": {
+ "rgb": "FF0000FF"
+ }
+ }
+ },
+ "t": "s"
+ },
+ "E2": {
+ "v": "Theme 5",
+ "s": {
+ "fill": {
+ "fgColor": {
+ "theme": 5
+ }
+ }
+ },
+ "t": "s"
+ },
+ "F2": {
+ "v": "Theme 5 Tint -0.5",
+ "s": {
+ "fill": {
+ "fgColor": {
+ "theme": 5,
+ "tint": -0.5
+ }
+ }
+ },
+ "t": "s"
+ },
+ "A3": {
+ "v": "Default",
+ "t": "s"
+ },
+ "B3": {
+ "v": "Arial",
+ "s": {
+ "font": {
+ "name": "Arial",
+ "sz": 24,
+ "color": {
+ "theme": "5"
+ }
+ }
+ },
+ "t": "s"
+ },
+ "C3": {
+ "v": "Times New Roman",
+ "s": {
+ "font": {
+ "name": "Times New Roman",
+ bold: true,
+ underline: true,
+ italic: true,
+ strike: true,
+ outline: true,
+ shadow: true,
+ vertAlign: "superscript",
+ "sz": 16,
+ "color": {
+ "rgb": "FF2222FF"
+ }
+ }
+ },
+ "t": "s"
+ },
+ "D3": {
+ "v": "Courier New",
+ "s": {
+ "font": {
+ "name": "Courier New",
+ "sz": 14
+ }
+ },
+ "t": "s"
+ },
+ "A4": {
+ "v": 0.618033989,
+ "t": "n"
+ },
+ "B4": {
+ "v": 0.618033989,
+ "t": "n"
+ },
+ "C4": {
+ "v": 0.618033989,
+ "t": "n"
+ },
+ "D4": {
+ "v": 0.618033989,
+ "t": "n",
+ "s": {
+ "numFmt": "0.00%"
+ }
+ },
+ "E4": {
+ "v": 0.618033989,
+ "t": "n",
+ "s": {
+ "numFmt": "0.00%",
+ "fill": {
+ "fgColor": {
+ "rgb": "FFFFCC00"
+ }
+ }
+ }
+ },
+ "A5": {
+ "v": 0.618033989,
+ "t": "n",
+ "s": {
+ "numFmt": "0%"
+ }
+ },
+ "B5": {
+ "v": 0.618033989,
+ "t": "n",
+ "s": {
+ "numFmt": "0.0%"
+ }
+ },
+ "C5": {
+ "v": 0.618033989,
+ "t": "n",
+ "s": {
+ "numFmt": "0.00%"
+ }
+ },
+ "D5": {
+ "v": 0.618033989,
+ "t": "n",
+ "s": {
+ "numFmt": "0.000%"
+ }
+ },
+ "E5": {
+ "v": 0.618033989,
+ "t": "n",
+ "s": {
+ "numFmt": "0.0000%"
+ }
+ },
+ "F5": {
+ "v": 0,
+ "t": "n",
+ "s": {
+ "numFmt": "0.00%;\\(0.00%\\);\\-;@",
+ "fill": {
+ "fgColor": {
+ "rgb": "FFFFCC00"
+ }
+ }
+ }
+ },
+ "A6": {
+ "v": "Sat Mar 21 2015 23:47:34 GMT-0400 (EDT)",
+ "t": "s"
+ },
+ "B6": {
+ "v": 42084.99137416667,
+ "t": "n"
+ },
+ "C6": {
+ "v": 42084.99137416667,
+ "s": {
+ "numFmt": "d-mmm-yy"
+ },
+ "t": "n"
+ },
+ "A7": {
+ "v": "left",
+ "s": {
+ "alignment": {
+ "horizontal": "left"
+ }
+ },
+ "t": "s"
+ },
+ "B7": {
+ "v": "center",
+ "s": {
+ "alignment": {
+ "horizontal": "center"
+ }
+ },
+ "t": "s"
+ },
+ "C7": {
+ "v": "right",
+ "s": {
+ "alignment": {
+ "horizontal": "right"
+ }
+ },
+ "t": "s"
+ },
+ "A8": {
+ "v": "vertical",
+ "s": {
+ "alignment": {
+ "vertical": "top"
+ }
+ },
+ "t": "s"
+ },
+ "B8": {
+ "v": "vertical",
+ "s": {
+ "alignment": {
+ "vertical": "center"
+ }
+ },
+ "t": "s"
+ },
+ "C8": {
+ "v": "vertical",
+ "s": {
+ "alignment": {
+ "vertical": "bottom"
+ }
+ },
+ "t": "s"
+ },
+ "A9": {
+ "v": "indent",
+ "s": {
+ "alignment": {
+ "indent": "1"
+ }
+ },
+ "t": "s"
+ },
+ "B9": {
+ "v": "indent",
+ "s": {
+ "alignment": {
+ "indent": "2"
+ }
+ },
+ "t": "s"
+ },
+ "C9": {
+ "v": "indent",
+ "s": {
+ "alignment": {
+ "indent": "3"
+ }
+ },
+ "t": "s"
+ },
+ "A10": {
+ "v": "In publishing and graphic design, lorem ipsum is a filler text commonly used to demonstrate the graphic elements of a document or visual presentation. ",
+ "s": {
+ "alignment": {
+ "wrapText": 1,
+ "horizontal": "right",
+ "vertical": "center",
+ "indent": 1
+ }
+ },
+ "t": "s"
+ },
+ "A11": {
+ "v": 41684.35264774306,
+ "s": {
+ "numFmt": "m/d/yy"
+ },
+ "t": "n"
+ },
+ "B11": {
+ "v": 41684.35264774306,
+ "s": {
+ "numFmt": "d-mmm-yy"
+ },
+ "t": "n"
+ },
+ "C11": {
+ "v": 41684.35264774306,
+ "s": {
+ "numFmt": "h:mm:ss AM/PM"
+ },
+ "t": "n"
+ },
+ "D11": {
+ "v": 42084.99137416667,
+ "s": {
+ "numFmt": "m/d/yy"
+ },
+ "t": "n"
+ },
+ "E11": {
+ "v": 42065.02247239584,
+ "s": {
+ "numFmt": "m/d/yy"
+ },
+ "t": "n"
+ },
+ "F11": {
+ "v": 42084.99137416667,
+ "s": {
+ "numFmt": "m/d/yy h:mm:ss AM/PM"
+ },
+ "t": "n"
+ },
+ "A12": {
+ "v": "Apple",
+ "s": {
+ "border": {
+ "top": {
+ "style": "thin"
+ },
+ "left": {
+ "style": "thin"
+ },
+ "right": {
+ "style": "thin"
+ },
+ "bottom": {
+ "style": "thin"
+ }
+ }
+ },
+ "t": "s"
+ },
+ "C12": {
+ "v": "Apple",
+ "s": {
+ "border": {
+ "diagonalUp": 1,
+ "diagonalDown": 1,
+ "top": {
+ "style": "dashed",
+ "color": {
+ "auto": 1
+ }
+ },
+ "right": {
+ "style": "medium",
+ "color": {
+ "theme": "5"
+ }
+ },
+ "bottom": {
+ "style": "hair",
+ "color": {
+ "theme": 5,
+ "tint": "-0.3"
+ }
+ },
+ "left": {
+ "style": "thin",
+ "color": {
+ "rgb": "FFFFAA00"
+ }
+ },
+ "diagonal": {
+ "style": "dotted",
+ "color": {
+ "auto": 1
+ }
+ }
+ }
+ },
+ "t": "s"
+ },
+ "E12": {
+ "v": "Pear",
+ "s": {
+ "border": {
+ "diagonalUp": 1,
+ "diagonalDown": 1,
+ "top": {
+ "style": "dashed",
+ "color": {
+ "auto": 1
+ }
+ },
+ "right": {
+ "style": "dotted",
+ "color": {
+ "theme": "5"
+ }
+ },
+ "bottom": {
+ "style": "mediumDashed",
+ "color": {
+ "theme": 5,
+ "tint": "-0.3"
+ }
+ },
+ "left": {
+ "style": "double",
+ "color": {
+ "rgb": "FFFFAA00"
+ }
+ },
+ "diagonal": {
+ "style": "hair",
+ "color": {
+ "auto": 1
+ }
+ }
+ }
+ },
+ "t": "s"
+ },
+ "A13": {
+ "v": "Up 90",
+ "s": {
+ "alignment": {
+ "textRotation": 90
+ }
+ },
+ "t": "s"
+ },
+ "B13": {
+ "v": "Up 45",
+ "s": {
+ "alignment": {
+ "textRotation": 45
+ }
+ },
+ "t": "s"
+ },
+ "C13": {
+ "v": "Horizontal",
+ "s": {
+ "alignment": {
+ "textRotation": 0
+ }
+ },
+ "t": "s"
+ },
+ "D13": {
+ "v": "Down 45",
+ "s": {
+ "alignment": {
+ "textRotation": 135
+ }
+ },
+ "t": "s"
+ },
+ "E13": {
+ "v": "Down 90",
+ "s": {
+ "alignment": {
+ "textRotation": 180
+ }
+ },
+ "t": "s"
+ },
+ "F13": {
+ "v": "Vertical",
+ "s": {
+ "alignment": {
+ "textRotation": 255
+ }
+ },
+ "t": "s"
+ },
+ "A14": {
+ "v": "Font color test",
+ "s": {
+ "font": {
+ "color": {
+ "rgb": "FFC6EFCE"
+ }
+ }
+ },
+ "t": "s"
+ },
+ "!ref": "A1:F14"
+ }
+ }
+}
+XLSX.writeFile(workbook, OUTFILE, { defaultCellStyle: defaultCellStyle });
+console.log("open " + OUTFILE)
+