前端实现table表格导出excel

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        .tb-head{
            background-color: #ccc;
        }
    </style>
<head>
<script type="text/javascript" language="javascript">    //处理除了行内样式以外的css样式,导出excel时只能读取到行内样式,要讲非行内样式转化成行内样式
        window.onload = function(){
            var tbhead = document.getElementsByClassName("tb-head");
            var computedStyle = document.defaultView.getComputedStyle(tbhead[0], null);
            console.log(computedStyle.backgroundColor);
            tbhead[0].style.backgroundColor = computedStyle.backgroundColor;
        }

        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 method1(tableid) {//整个表格拷贝到EXCEL中
            if(getExplorer()==‘ie‘)
            {
                var curTbl = document.getElementById(tableid);
                var oXL = new ActiveXObject("Excel.Application");

                //创建AX对象excel
                var oWB = oXL.Workbooks.Add();
                //获取workbook对象
                var xlsheet = oWB.Worksheets(1);
                //激活当前sheet
                var sel = document.body.createTextRange();
                sel.moveToElementText(curTbl);
                //把表格中的内容移到TextRange中
                sel.select;
                //全选TextRange中内容
                sel.execCommand("Copy");
                //复制TextRange中内容
                xlsheet.Paste();
                //粘贴到活动的EXCEL中
                oXL.Visible = true;
                //设置excel可见属性

                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);
                    //xls.visible = false;
                    oXL.Quit();
                    oXL = null;
                    //结束excel进程,退出完成
                    //window.setInterval("Cleanup();",1);
                    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 xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></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) {
                        debugger;
                        if (!table.nodeType) table = document.getElementById(table);
                        var ctx = {worksheet: name || ‘Worksheet‘, table: table.innerHTML};
                        window.location.href = uri + base64(format(template, ctx));
                    }
        })()
    </script>

</head>
<body>
<!-- <table id="ta">
  <tr>
    <td>1</td><td>admin</td>
    <td>23</td><td>程序员</td>
    <td>天津</td><td>[email protected]</td>
  </tr>
  <tr>
    <td>2</td><td>guest</td>
    <td>23</td><td>测试员</td>
    <td>北京</td><td>[email protected]</td>
  </tr>
</table> -->
<table id="tb" border=4 width=250 align=center>
        <caption>【表格举例】</caption>
        <tr class="tb-head">
            <th><br></th>
            <th>列-A</th>
            <th>列-B</th>
            <th>列-C</th>
        </tr>
        <tr align=center>
            <td>行-1</td>
            <td>A1</td>
            <td>B1</td>
            <td rowspan=2>C1-C2</td>
        </tr>
        <tr align=center>
            <td>行-2</td>
            <td>A2</td>
            <td>B2</td>
        </tr>
        <tr align=center>
            <td>行-3</td>
            <td>A3</td>
            <td colspan=2>A3-B3</td>
        </tr>
    </table>
<input id="Button1" type="button" value="导出EXCEL"
        onclick="method1(‘tb‘)" />
</body>
</html>

  

时间: 2024-10-28 11:32:06

前端实现table表格导出excel的相关文章

Angular纯前端实现table表格导出excel的xls格式

版本:angular版本5.2.0 插件:filesaver1.3.8 方法: 首先npm安装filesaver npm install file-saver --save 然后直接在表格所属的component中,不是module,是在componet中引入,代码如下: component.ts import { saveAs } from "file-saver"; //方法 exportTable() { const blob = new Blob([document.getEl

vue+iview中的table表格导出excel表格

一.iveiw框架中table中有exportCsv()方法可以导出.csv后缀文件,类似于excel文件,但是并不是excel文件. 二.实现table表格导出excel文件利用Blob.js 和 Export2Excel.js两个文件实现 1.Blob.js 和 Export2Excel.js文件 链接:https://pan.baidu.com/s/1PvP-NxmONNh71SRDvlL_9A 密码:3h82 2.把Blob.js 和 Export2Excel.js文件添加到src文件夹

Element-ui组件库Table表格导出Excel表格--存在重复数据问题

借鉴:https://www.jianshu.com/p/1971fc5b97ca https://blog.csdn.net/qq_40614207/article/details/94003793 贴出代码 // 定义导出Excel表格事件 exportExcel() { // 解决生成重复数据-因为使用l fixed属性 var fix = document.querySelector('.el-table__fixed') var wb // 判断要导出的节点中是否有fixed的表格,如

【前端】将前台table数据导出excel表格

1.首先引用jquery以及table2excel <script type="text/javascript" src="js/jquery.table2excel.min.js"></script> <script type="text/javascript" src="js/jquery.min.js"></script> 2.表格部分 <table lay-filt

js操作table表格导出数据到excel方法

js导出excel资料很少,网上也找了很多,基本都不能用,要么只能是IE用,还必须要权限,这是非常不好的.后来到github上找到table2excel.js,虽然可以用,但仍然对IE支持不够,也算不错的东西. 导出的excel文件是xlsx,也可以改为xls打开.注意的是,要对每个table做个标记,加上div框架如代码: <div class="table-responsive table2excel" data-tableName="Test Table 1&qu

[ExtJS5学习笔记]第三十三节 sencha extjs 5 grid表格导出excel

使用extjs肯定少不了使用表格控件,用到表格,领导们(一般)还是惯于使用excel看数据,所以用到extjs表格的技术猿们肯定也会有导出表格excel这一个需求,本文主要针对如何在用extjs将grid表格导出到excel,使用的是前端导出,不涉及后端. 本文目录 本文目录 源代码打包下载 将源代码嵌入到应用中 查看导出按钮以及导出效果 扩展支持sum统计和groupsum分组 源代码打包下载 本次使用的是github上的一个开源项目Exporter 下载地址:https://github.c

前端vue使用js-xlsx导出excel的三种方法

npm install --save xlsx file-saver 在组件里面引入 import FileSaver from 'file-saver' import XLSX from 'xlsx' 第一种 其中#outTable是在el-table上定义的id exportExcel() { var xlsxParam = { raw: true };//转换成excel时,使用原始的格式 var wb = XLSX.utils.table_to_book(document.querySe

web利用table表格生成excel格式问题

当我们把web页面上的table导成excel形式时,有时候我们的数据需要以特定的格式呈现出来,这时候我们就需要给指定的单元格添加一些样式规格信息. 文本:vnd.ms-excel.numberformat:@ 日期:vnd.ms-excel.numberformat:yyyy/mm/dd 数字:vnd.ms-excel.numberformat:#,##0.00 货币:vnd.ms-excel.numberformat:¥#,##0.00 百分比:vnd.ms-excel.numberform

webform 不实用office控件导出excel StringBuilder 类型拼接字符串表格导出excel

StringBuilder sb = new StringBuilder(); sb.AppendLine("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\">"); sb.AppendLine("<table border=\"1\">"); sb.Append("<tr&