美文网首页
两种使用原生js实现导出excel数据简单讲解

两种使用原生js实现导出excel数据简单讲解

作者: 关爱单身狗成长协会 | 来源:发表于2018-09-02 16:56 被阅读8289次

    1.js导出csv

    简单来说csv就是一种数据以逗号隔开的,文件以纯文本形式存储表格数据。
    csv优点是实现起来相对简单,但是不支持多sheet和样式
    具体可以查看CSV百度百科进行了解

    根据csv格式的说明,所以我们实现导出csv就很简单了,只要原始数据转换成列数据与列数据之间用逗号隔开,行数据进行换行格式的文本数据其后缀为 .csv 就可以了
    导出示例:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>demo</title>
    </head>
    <body>
        <textarea id="textarea" cols="30" rows="10">列头1,列头2,列头3,列头4,列头5
    r1.1,r1.2,r1.3,r1.4,r1.5
    r2.1,r2.2,r2.3,r2.4,r2.5
    r3.1,r3.2,r3.3,r3.4,r3.5
    r4.1,r4.2,r4.3,r4.4,r4.5
    r5.1,r5.2,r5.3,r5.4,r5.5
    r6.1,r6.2,r6.3,r6.4,r6.5
    r7.1,r7.2,r7.3,r7.4,r7.5</textarea>
        <script>
            var text = document.getElementById("textarea").value;
            var blob = new Blob([text], { type: "text/comma-separated-values" });
            var a = document.createElement("a");
            a.href = URL.createObjectURL(blob);
            a.download = "01.csv";
            a.innerHTML = "下载"
            document.body.appendChild(a);
        </script>
    </body>
    </html>
    
    aa1.gif

    2.js导出xls

    这个方法是很早前在网上发现的。
    其实它的实现原理也很简单就是直接将嵌有HTML表格的HTML代码直接保存为.xls后缀的文件。
    这种方式的好处是能保留HTML原来设计好的样式,但是你要事先设置好表格显示排版

    导出示例:

    <html>
    
    <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
    
    <body>
      <table border="1">
        <tr>
          <th height="40" colspan="6" style="font-size:18px">
            <div align="center">请假条</div>
          </th>
        </tr>
        <tr>
          <td height="40" width="80">
            <div align="center">姓名</div>
          </td>
          <td width="180">&nbsp;</td>
          <td width="80">
            <div align="center">部门</div>
          </td>
          <td width="180">&nbsp;</td>
          <td width="80">
            <div align="center">职务</div>
          </td>
          <td width="180">&nbsp;</td>
        </tr>
        <tr>
          <td height="40" colspan="6">1、请假类别: &nbsp;☐事假 &nbsp;☐病假 &nbsp;☐婚假 &nbsp;☐丧假 &nbsp;☐公假 &nbsp;☐伤假 &nbsp;☐产假 &nbsp;☐其他
        </tr>
        <tr>
          <td height="80" colspan="6">
            <p>2、请假事由:</p>
            <p>&nbsp;</p>
          </td>
        </tr>
        <tr>
          <td height="40" colspan="6">3、请假时间:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;年&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;月&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;日&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;至&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;月&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;日</td>
        </tr>
        <tr>
          <td height="40">
            <div align="center">审核意见</div>
          </td>
          <td colspan="5">&nbsp;</td>
        </tr>
      </table>
      <script>
        var tableHTML = document.querySelector("table").outerHTML;
        var xlsContent= `<html xmlns:v="urn:schemas-microsoft-com:vml" 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>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <meta name="ProgId" content="Excel.Sheet" /> 
    </head>
    <body>${tableHTML}</body>
    </html>`; 
        var blob = new Blob([xlsContent], { type: "application/vnd.ms-excel" });
        var a = document.createElement("a");
        a.href = URL.createObjectURL(blob);
        a.download = "demo.xls";
        a.innerHTML = "下载xls"
        document.body.appendChild(a); 
      </script>
    </body>
    </html>
    

    相关文章

      网友评论

          本文标题:两种使用原生js实现导出excel数据简单讲解

          本文链接:https://www.haomeiwen.com/subject/qummwftx.html