博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
表格导出
阅读量:5368 次
发布时间:2019-06-15

本文共 7150 字,大约阅读时间需要 23 分钟。

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>html 表格导出道</title>

<script type="text/javascript" src="./js/jquery.js"></script>

<script type="text/javascript" src="js/FileSaver.js"></script>

<script type="text/javascript" src="./js/jquery.wordexport.js"></script>

<script type="text/javascript">

//第一种方法

function method1(tableid) {

    var curTbl = document.getElementById(tableid);

    var oXL = new ActiveXObject("Excel.Application");

    var oWB = oXL.Workbooks.Add();

    var oSheet = oWB.ActiveSheet;

    var sel = document.body.createTextRange();

    sel.moveToElementText(curTbl);

    sel.select();

    sel.execCommand("Copy");

    oSheet.Paste();

    oXL.Visible = true;

}

//第二种方法

function method2(tableid) {

    var curTbl = document.getElementById(tableid);

    var oXL = new ActiveXObject("Excel.Application");

    var oWB = oXL.Workbooks.Add();

    var oSheet = oWB.ActiveSheet;

    var Lenr = curTbl.rows.length;

    for (i = 0; i < Lenr; i++) {

        var Lenc = curTbl.rows(i).cells.length;

        for (j = 0; j < Lenc; j++) {

            oSheet.Cells(i + 1, j + 1).value = curTbl.rows(i).cells(j).innerText;

        }

    }

    oXL.Visible = true;

}

//第三种方法

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("你要导出的表不存在");

            return;

        }

        var fileName = getExcelFileName();

        doFileExport(fileName, allStr);

    } catch (e) {

        alert("导出发生异常:" + 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 + "不存在 !");

    }

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

}

//第四种

function method4(tableid) {

    var curTbl = document.getElementById(tableid);

    var oXL;

    try {

        oXL = new ActiveXObject("Excel.Application"); //创建AX对象excel

    } catch (e) {

        alert("无法启动Excel!\n\n如果您确信您的电脑中已经安装了Excel," + "那么请调整IE的安全级别。\n\n具体操作:\n\n" + "工具 → Internet选项 → 安全 → 自定义级别 → 对没有标记为安全的ActiveX进行初始化和脚本运行 → 启用");

        return false;

    }

    var oWB = oXL.Workbooks.Add(); //获取workbook对象

    var oSheet = oWB.ActiveSheet; //激活当前sheet

    var sel = document.body.createTextRange();

    sel.moveToElementText(curTbl); //把表格中的内容移到TextRange中

    sel.select(); //全选TextRange中内容

    sel.execCommand("Copy"); //复制TextRange中内容

    oSheet.Paste(); //粘贴到活动的EXCEL中

    oXL.Visible = true; //设置excel可见属性

    var fname = oXL.Application.GetSaveAsFilename("将table导出到excel.xls", "Excel Spreadsheets (*.xls), *.xls");

    oWB.SaveAs(fname);

    oWB.Close();

    oXL.Quit();

}

//第五种方法

var idTmr;

function getExplorer() {

    var explorer = window.navigator.userAgent;

    if (explorer.indexOf("MSIE") >= 0) {//ie

        return 'ie';

    }else if (explorer.indexOf("Firefox") >= 0) {//firefox

        return 'Firefox';

    }else if (explorer.indexOf("Chrome") >= 0) {//Chrome

        return 'Chrome';

    }else if (explorer.indexOf("Opera") >= 0) {//Opera

        return 'Opera';

    }else if (explorer.indexOf("Safari") >= 0) {//Safari

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

    }

})();

//导出为word

function explodeword(){

    $("#myDiv").wordExport();

}

</script>

</head>

<body>

    <div>

        <button type="button" οnclick="method1('tableExcel')">导出Excel方法一</button>

        <button type="button" οnclick="method2('tableExcel')">导出Excel方法二</button>

        <button type="button" οnclick="getXlsFromTbl('tableExcel','myDiv')">导出Excel方法三</button>

        <button type="button" οnclick="method4('tableExcel')">导出Excel方法四</button>

        <button type="button" οnclick="method5('tableExcel')">导出Excel方法五</button>

        <button type="button" οnclick="explodeword()">导出WORD方法</button>

    </div>

    <div id="myDiv">

        <table id="tableExcel" width="100%" border="1" cellspacing="0" cellpadding="0">

            <tr>

                <td colspan="5">html 表格导出到Excel</td>

            </tr>

            <tr>

                <td>列标题1</td>

                <td>列标题2</td>

                <td>类标题3</td>

                <td>列标题4</td>

                <td>列标题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>

</body>

</html>

 

转载于:https://www.cnblogs.com/alonesky/p/9954097.html

你可能感兴趣的文章
【零基础学习iOS开发】【02-C语言】08-基本运算
查看>>
Java 将指定字符串连接到此字符串的结尾 concat()
查看>>
Hibernate Criterion
查看>>
Python知识
查看>>
我们为什么要搞长沙.NET技术社区(三)
查看>>
杭电acm Cake
查看>>
js函数中this的指向
查看>>
c++ 引用方式传递数组
查看>>
HBase学习之路 (九)HBase phoenix的使用
查看>>
LeetCode() Remove Duplicates from Sorted Array II
查看>>
【svn】idea svn 文件上会出现一个破书
查看>>
cocos2d-x 3.0 场景切换特效汇总(转)
查看>>
The SortedMap Interface
查看>>
SniperOJ-leak-x86-64
查看>>
bzoj 4260: Codechef REBXOR (01 Trie)
查看>>
学好python
查看>>
css-IE中的border-radius和box-shadow
查看>>
利用bootstrap和webform的异步CRUD及分页
查看>>
HDUOJ 1879继续畅通工程(并查集)
查看>>
OC12_自动释放池
查看>>