Pure JS method to export table to excel

Pure JS method to export table to excel

html

<div >
    <button type="button" onclick="getXlsFromTbl('tableExcel','myDiv')">IE export Excel method</button>
    <button type="button" onclick="method5('tableExcel')">Chrome export Excel</button>
</div>
<div id="myDiv">
    <table id="tableExcel" width="100%" border="1" cellspacing="0" cellpadding="0">
        <tr>
            <td colspan="5" align="center">Export html table to Excel</td>
        </tr>
        <tr>
            <td>Column Heading 1</td>
            <td>Column Heading 2</td>
            <td>Class Title 3</td>
            <td>Column Heading 4</td>
            <td>Column Heading 5</td>
        </tr>
        <tr>
            <td>aaa</td>
            <td>bbb</td>
            <td>ccc</td>
            <td>ddd</td>
            <td>eee</td>
        </tr>
        <tr>
            <td>AAA</td>
            <td>BBB</td>
            <td>CCC</td>
            <td>DDD</td>
            <td>EEE</td>
        </tr>
        <tr>
            <td>FFF</td>
            <td>GGG</td>
            <td>HHH</td>
            <td>III</td>
            <td>JJJ</td>
        </tr>
    </table>
</div>

js

<script language="JavaScript" type="text/javascript">
        //IE method function getXlsFromTbl(inTblId, inWindow){

            try {
                var allStr = "";
                var curStr = "";
                if (inTblId != null && inTblId != "" && inTblId != "null") {

                    curStr = getTblData(inTblId, inWindow);

                }
                if (curStr != null) {
                    allStr += curStr;
                }

                else {

                    alert("The table you want to export does not exist");
                    return;
                }
                var fileName = getExcelFileName();
                doFileExport(fileName, allStr);

            }

            catch(e) {

                alert("Export exception:" + e.name + "->" + e.description + "!");

            }

        }
        function getTblData(inTbl, inWindow) {

            var rows = 0;
            var tblDocument = document;
            if (!!inWindow && inWindow != "") {

                if (!document.all(inWindow)) {
                    return null;
                }

                else {
                    tblDocument = eval(inWindow).document;
                }

            }

            var curTbl = tblDocument.getElementById(inTbl);
            var outStr = "";
            if (curTbl != null) {
                for (var j = 0; j < curTbl.rows.length; j++) {
                    for (var i = 0; i < curTbl.rows[j].cells.length; i++) {

                        if (i == 0 && rows > 0) {
                            outStr += " t";
                            rows -= 1;
                        }

                        outStr += curTbl.rows[j].cells[i].innerText + "t";
                        if (curTbl.rows[j].cells[i].colSpan > 1) {
                            for (var k = 0; k < curTbl.rows[j].cells[i].colSpan - 1; k++) {
                                outStr += " t";
                            }
                        }
                        if (i == 0) {
                            if (rows == 0 && curTbl.rows[j].cells[i].rowSpan > 1) {
                                rows = curTbl.rows[j].cells[i].rowSpan - 1;
                            }
                        }
                    }
                    outStr += "rn";
                }
            }

            else {
                outStr = null;
                alert(inTbl + "does not exist!");
            }
            return outStr;
        }
        function getExcelFileName() {
            var d = new Date();
            var curYear = d.getYear();
            var curMonth = "" + (d.getMonth() + 1);
            var curDate = "" + d.getDate();
            var curHour = "" + d.getHours();
            var curMinute = "" + d.getMinutes();
            var curSecond = "" + d.getSeconds();
            if (curMonth.length == 1) {
                curMonth = "0" + curMonth;
            }

            if (curDate.length == 1) {
                curDate = "0" + curDate;
            }

            if (curHour.length == 1) {
                curHour = "0" + curHour;
            }

            if (curMinute.length == 1) {
                curMinute = "0" + curMinute;
            }

            if (curSecond.length == 1) {
                curSecond = "0" + curSecond;
            }
            var fileName = "table" + "_" + curYear + curMonth + curDate + "_"
                    + curHour + curMinute + curSecond + ".csv";
            return fileName;

        }
        function doFileExport(inName, inStr) {
            var xlsWin = null;
            if (!!document.all("glbHideFrm")) {
                xlsWin = glbHideFrm;
            }
            else {
                var width = 6;
                var height = 4;
                var openPara = "left=" + (window.screen.width / 2 - width / 2)
                        + ",top=" + (window.screen.height / 2 - height / 2)
                        + ",scrollbars=no,width=" + width + ",height=" + height;
                xlsWin = window.open("", "_blank", openPara);
            }
            xlsWin.document.write(inStr);
            xlsWin.document.close();
            xlsWin.document.execCommand('Saveas', true, inName);
            xlsWin.close();

        }

        //Chrome method var idTmr;
        function getExplorer() {
            var explorer = window.navigator.userAgent;
            //ie  
            if (explorer.indexOf("MSIE") >= 0) {
                return 'ie';
            }
            //firefox  
            else if (explorer.indexOf("Firefox") >= 0) {
                return 'Firefox';
            }
            //Chrome  
            else if (explorer.indexOf("Chrome") >= 0) {
                return 'Chrome';
            }
            //Opera  
            else if (explorer.indexOf("Opera") >= 0) {
                return 'Opera';
            }
            //Safari  
            else if (explorer.indexOf("Safari") >= 0) {
                return 'Safari';
            }
        }
        function method5(tableid) {
            if(getExplorer()=='ie')
            {
                var curTbl = document.getElementById(tableid);
                var oXL = new ActiveXObject("Excel.Application");
                var oWB = oXL.Workbooks.Add();
                var xlsheet = oWB.Worksheets(1);
                var sel = document.body.createTextRange();
                sel.moveToElementText(curTbl);
                sel.select();
                sel.execCommand("Copy");
                xlsheet.Paste();
                oXL.Visible = true;

                try {
                    var fname = oXL.Application.GetSaveAsFilename("Excel.xls", "Excel Spreadsheets (*.xls), *.xls");
                } catch (e) {
                    print("Nested catch caught " + e);
                finally
                    oWB.SaveAs(fname);
                    oWB.Close(savechanges = false);
                    oXL.Quit();
                    oXL = null;
                    idTmr = window.setInterval("Cleanup();", 1);
                }

            }
            else
            {
                tableToExcel(tableid)
            }
        }
        function Cleanup() {
            window.clearInterval(idTmr);
            CollectGarbage();
        }
        var tableToExcel = (function() {
            var uri = 'data:application/vnd.ms-excel;base64,',
                    template = '<html><head><meta charset="UTF-8"></head><body><table>{table}</table></body></html>',
                    base64 = function(s) { return window.btoa(unescape(encodeURIComponent(s))) },
                    format = function(s, c) {
                        return s.replace(/{(\w+)}/g,
                                function(m, p) { return c[p]; }) }
            return function(table, name) {
                if (!table.nodeType) table = document.getElementById(table)
                var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML}
                window.location.href = uri + base64(format(template, ctx))
            }
        })()

    </script>

This concludes this article about how to export a table to Excel using pure JS. For more information about exporting a table to Excel using JS, please search previous articles on 123WORDPRESS.COM or continue browsing the following related articles. I hope you will support 123WORDPRESS.COM in the future!

You may also be interested in:
  • Example of how to export csv file (excel) using javascript
  • How to export Excel (CSV) files for JS compatible browsers
  • Export table to Excel and retain style based on JS
  • js to export data to EXCEL (supports large amounts of data export)
  • Detailed explanation of five methods of exporting Excel using JS [with source code download]
  • Method of exporting Excel from js front end
  • JS implements exporting Excel and CSV files

<<:  Understand all aspects of HTTP Headers with pictures and text

>>:  Detailed explanation of MySQL 8's new feature ROLE

Recommend

How to use nginx to configure access to wgcloud

The nginx configuration is as follows: Such as ht...

vue+echarts realizes the flow effect of China map (detailed steps)

@vue+echarts realizes the flow effect of China ma...

Samba server configuration under Centos7 (actual combat)

Samba Overview Samba is a free software that impl...

Detailed explanation of JavaScript error capture

Table of contents 1. Basic usage and logic 2. Fea...

JavaScript Sandbox Exploration

Table of contents 1. Scenario 2. Basic functions ...

Five practical tips for web form design

1. Mobile selection of form text input: In the te...

JavaScript canvas to load pictures

This article shares the specific code of JavaScri...

Solution to the problem of data loss when using Replace operation in MySQL

Preface The company's developers used the rep...

HTML table markup tutorial (6): dark border color attribute BORDERCOLORDARK

In a table, you can define the color of the lower...

Difference between varchar and char types in MySQL

Table of contents aforementioned VARCHAR Type VAR...

MySQL uses inet_aton and inet_ntoa to process IP address data

This article will introduce how to save IP addres...

How to run the springboot project in docker

1. Click Terminal below in IDEA and enter mvn cle...

MySQL transaction control flow and ACID characteristics

Table of contents 1. ACID Characteristics Transac...

What is the file mysql-bin.000001 in mysql? Can it be deleted?

After installing MySQL using ports, I found that ...