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

Introduction to HTML_PowerNode Java Academy

What is HTML? HTML is a language used to describe...

React antd realizes dynamic increase and decrease of form

I encountered a pitfall when writing dynamic form...

Tutorial on installing MySQL 5.6 using RPM in CentOS

All previous projects were deployed in the Window...

Input file custom button beautification (demo)

I have written such an article before, but I used...

Detailed example of SpringBoot+nginx to achieve resource upload function

Recently, I have been learning to use nginx to pl...

In-depth analysis of MySQL deadlock issues

Preface If our business is at a very early stage ...

jQuery implements navigation bar effect with expansion animation

I designed and customized a navigation bar with a...

Vue project code splitting solution

Table of contents background Purpose Before split...

Detailed explanation of the usage of two types of temporary tables in MySQL

External temporary tables A temporary table creat...

js uses FileReader to read local files or blobs

Table of contents FileReader reads local files or...

Web page custom selection box Select

Everyone may be familiar with the select drop-dow...

Detailed explanation of Vue's monitoring method case

Monitoring method in Vue watch Notice Name: You s...

Solve the problem that ifconfig and addr cannot see the IP address in Linux

1. Install the Linux system on the virtual machin...

HTML+CSS+jQuery imitates the search hot list tab effect with screenshots

Copy code The code is as follows: <!DOCTYPE ht...

Linux uses suid vim.basic file to achieve privilege escalation

Reproduce on Kali First set suid permissions for ...