<!DOCTYPE html>
<!-- (C) 2013-present  SheetJS http://sheetjs.com -->
<!-- vim: set ts=2: -->
<html>
<head>
  <title>SheetJS JS-XLSX In-Browser HTML Table Export Demo</title>
  <style>
    .xport, .btn {
      display: inline;
      text-align:center;
    }
    a { text-decoration: none }

    .button {
      padding: 20px;
      border-radius: 10px;
      background-color:#9b6;
      display: block;
      width: 200px;
    }
  </style>
</head>
<body>
<!-- SheetJS js-xlsx library -->
<script type="text/javascript" src="http://rawgit.com/protobi/js-xlsx/master/shim.js"></script>
<script type="text/javascript" src="http://rawgit.com/protobi/js-xlsx/master/dist/xlsx.full.min.js"></script>

<!-- FileSaver.js is the library of choice for Chrome -->
<script type="text/javascript" src="http://rawgit.com/eligrey/Blob.js/master/Blob.js"></script>
<script type="text/javascript" src="https://fastcdn.org/FileSaver.js/1.1.20151003/FileSaver.min.js"></script>

<!-- FileSaver doesn't work in older IE and newer Safari; Downloadify is the flash fallback -->
<script type="text/javascript" src="http://sheetjs.com/demos/swfobject.js"></script>
<script type="text/javascript" src="http://sheetjs.com/demos/downloadify.min.js"></script>
<script type="text/javascript" src="http://sheetjs.com/demos/base64.min.js"></script>

<script type="text/javascript">
  function export_table_to_excel() {
    var wb = {
      "SheetNames": [
        "Main"
      ],
      "Sheets": {
        "Main": {
          "!merges": [
            {
              "s": {
                "c": 0,
                "r": 0
              },
              "e": {
                "c": 2,
                "r": 1
              }
            }
          ],
          "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",
            "s":{
              "border": {
                "left": {
                  "style": "thick",
                  "color": {
                    "auto": 1
                  }
                },
                "top": {
                  "style": "thick",
                  "color": {
                    "auto": 1
                  }
                },
                "bottom": {
                  "style": "thick",
                  "color": {
                    "auto": 1
                  }
                }
              }
            }
          },
          "B2": {
            "v": "Red",
            "s": {
              "fill": {
                "fgColor": {
                  "rgb": "FFFF0000"
                }
              },

              "border": {

                "bottom": {
                  "style": "thick",
                  "color": {
                    "auto": 1
                  }
                }
              }
            },
            "t": "s"
          },
          "C2": {
            "v": "Green",
            "s": {
              "fill": {
                "fgColor": {
                  "rgb": "FF00FF00"
                }
              },
              "border": {

                "bottom": {
                  "style": "thick",
                  "color": {
                    "auto": 1
                  }
                },
                "right": {
                  "style": "thick",
                  "color": {
                    "auto": 1
                  }
                }
              }

            },
            "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"
        }
      }
    }

    var wbout = XLSX.write(wb, {bookType:'xlsx', bookSST:true, type: 'binary'});
    var fname =   'test.xlsx';
    try {
      saveAs(new Blob([s2ab(wbout)],{type:"application/octet-stream"}), fname);
    } catch(e) { if(typeof console != 'undefined') console.log(e, wbout); }
    return wbout;
  }
  function s2ab(s) {
    if(typeof ArrayBuffer !== 'undefined') {
      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;
    } else {
      var buf = new Array(s.length);
      for (var i=0; i!=s.length; ++i) buf[i] = s.charCodeAt(i) & 0xFF;
      return buf;
    }
  }
</script>

<button class="button" onclick="export_table_to_excel()">Export</button>
</body>
</html>