JS实现导出网页表格为Excel

首先声明:这篇是转载然后稍加修改的,原文下载表格会出现乱码,因此做了一些改进。
原文地址:js实现table导出Excel,保留table样式
PS:实际导出并不是真正的Excel文件,实际上一个html文件,只不过后缀改为了xls,利用Excel能打开html的特性,直接贴代码。
PS:chrome浏览器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        table td {
            font-size: 12px;
            width: 200px;
            height: 30px;
            text-align: center;
            background-color: #4f891e;  /*这是网页上表格的背景颜色*/
            color: #ffffff;   /*这是网页上表格的字体颜色*/
        }
    </style>
</head>
<body>
    <a download="下载表格" href="#"  id="excelOut" class="easyui-linkbutton l-btn l-btn-small" data-options="iconCls:'icon-undo'">导出为 Excel 文档</a>
    <table cellspacing="0" cellpadding="0" border="1" id="tableToExcel">
        <thead>
            <tr>
                <td style="font-size: 18px">公司一</td>
                <td>公司二一</td>
                <td>公司三</td>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>A公司</td>
                <td>B公司</td>
                <td>C公司</td>
            </tr>
            <tr>
                <td>A公司</td>
                <td>B公司</td>
                <td>C公司</td>
            </tr>
            <tr>
                <td>A公司</td>
                <td>B公司</td>
                <td>C公司</td>
            </tr>
            <tr>
                <td colspan="3">共计</td>
            </tr>
        </tbody>
    </table>
    <script>
        window.onload = function () {
            tableToExcel('tableToExcel', '下载模板')
        };
        //base64转码
        var base64 = function (s) {
            return window.btoa(unescape(encodeURIComponent(s)));
        };
        //替换table数据和worksheet名字
        var format = function (s, c) {
            return s.replace(/{(\w+)}/g,
                function (m, p) {
                    return c[p];
                });
        }
        function tableToExcel(tableid, sheetName) {
            var uri = 'data:application/vnd.ms-excel;base64,';
            var 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]-->' +
                ' <style type="text/css">' +
                'table td {' +
                'border: 1px solid #000000;' +
                'width: 200px;' +
                'height: 30px;' +
                ' text-align: center;' +
                'background-color: transparent;' +    /*这里修改表格中背景的颜色,如果你想要原来的背景可以用网页上使用的背景色,如果想要不同的颜色应该是不能实现的*/
                'color: #000000;' +   /*这里修改导出的表格中文字的颜色*/
                ' }' +
                '</style>' +
                '</head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><body ><table class="excelTable">{table}</table></body></html>'; /*这个地方解决乱码的问题*/
            if (!tableid.nodeType) tableid = document.getElementById(tableid);
            var ctx = { worksheet: sheetName || 'Worksheet', table: tableid.innerHTML };
            document.getElementById("excelOut").href = uri + base64(format(template, ctx));
        }
    </script>
</body>
</html>

附上常见颜色:
常见颜色
颜色名称和sRGB值

黑色=“#000000”		     绿色=“#008000”
银=“#C0C0C0”		     石灰=“#00FF00”
Gray=“#808080”		     奥利芙=“#808000”
White=“#FFFFFF”		     黄色=“#FFFF 00”
马龙=“#800000”		     海军=“#000080”
红色=“#FF 0000”		     蓝色=“0000FF”
紫色=“#800080”		     teal=“#008080”
紫红色=“#FF00FF”		     Aqua=“00FFFF”

原文作者提供了两种方式:①是在table的行内写style样式,②是在模板里面添加样式。
这里采用的是第一张方式,有需求的可以看下原文。
【侵删】

如何改掉中直接添加背景颜色,导出的表格不能自定义背景颜色的问题,请看
JS导出有背景色的表格Excel如何去掉背景色

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值