如何将html表导出为xlsx文件

时间:2016-05-28 12:00:03

标签: javascript excel html-table xls xlsx

我有一个关于将 html表导出为 xlsx 文件的问题。我做了一些工作,现在我可以将其导出为 xls ,但我需要将其导出为 xlsx

这里是我的jsFiddle: https://jsfiddle.net/272406sv/1/

这里是我的HTML:

<table id="toExcel" class="uitable">
  <thead>
    <tr>
      <th>Kampanya Başlığı</th>
      <th>Kampanya Türü</th>
      <th>Kampanya Başlangıç</th>
      <th>Kampanya Bitiş</th>
      <th style="text-align: center">Aksiyonlar</th>
    </tr>
  </thead>
  <tbody>
    <tr ng-repeat="Item in campaign.campaignList">
      <td> Item.CampaignTitle </td>
      <td> Item.CampaignHotelType </td>
      <td> Item.CampaignHotelCheckInDate) </td>
      <td>Item.CampaignHotelCheckOutDate</td>
      <td style="text-align: center">
        <button> Some Action </button>
      </td>
    </tr>
  </tbody>
</table>

<button onclick="exceller()">EXCEL</button>

这里是我的js:

<script>
  function exceller() {
    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];
        })
      }
    var toExcel = document.getElementById("toExcel").innerHTML;
    var ctx = {
      worksheet: name || '',
      table: toExcel
    };
    var link = document.createElement("a");
    link.download = "export.xls";
    link.href = uri + base64(format(template, ctx))
    link.click();
  }

</script>

4 个答案:

答案 0 :(得分:7)

用于将html表格导出到xlsxxlscsvtxt优秀客户端工具, TableExport clarketm me )。它是一个简单,易于实现,功能齐全的库,具有一系列可配置的属性和方法。

安装

$ npm install tableexport

用法

TableExport(document.getElementsByTagName("table"));

// OR using jQuery

$("table").tableExport(); 

Documentation

让您入门的示例应用

  

查看简明docs或者直接访问Github上的TableExport以获取完整的功能列表。

答案 1 :(得分:5)

如果不返回服务器,您将无法将其导出为XLSX。 XLSX文件是压缩在一起的XML文件的集合。这意味着您需要创建多个文件。这与客户端的JS无关。

相反,您应该创建一个函数,从HTML表中检索数据并将其发送给您的服务器。然后,服务器可以为您创建XLSX文件(有一堆可用的库!)并将其发送回客户端进行下载。

如果您希望拥有庞大的数据集,则服务器上的XLSX创建应该作为异步过程完成,您可以在完成后通知用户(而不是让用户等待创建文件)。 / p>

告诉我们您在服务器上使用的语言,我们将为您推荐一些好的库。

答案 2 :(得分:1)

查看tableExport.jquery.plugintableexport.jquery.plugin

代码示例

<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8">
  <title>HTML table Export</title>  
    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
    <script type="text/javascript" src="../lib/js-xlsx/xlsx.core.min.js"></script>
    <script type="text/javascript" src="../lib/FileSaver/FileSaver.min.js"></script> 
    <script type="text/javascript" src="../lib/html2canvas/html2canvas.min.js"></script>
    <script type="text/javascript" src="../tableExport.js"></script>
    <script type="text/javaScript">         
        var sFileName = 'ngophi';
        function ExportXLSX(){
            $('#Event').tableExport({fileName: sFileName,
                        type: 'xlsx'
                       });
        }
    </script>
 <style type="text/css">
     body {
        font-size: 12pt;
        font-family: Calibri;
        padding : 10px;
    }
    table {
        border: 1px solid black;
    }
    th {
        border: 1px solid black;
        padding: 5px;
        background-color:grey;
        color: white;
    }
    td {
        border: 1px solid black;
        padding: 5px;
    }
    input {
        font-size: 12pt;
        font-family: Calibri;
    }
 </style>
</head>
<body>  
<a href="#" onClick="ExportXLSX();">DownloadXLSX</a> 
<br/>
<br/>
<div id="Event">
    <table>
        <tr>
            <th>Column One</th>
            <th>Column Two</th>
            <th>Column Three</th>
        </tr>
        <tr>
            <td>row1 Col1</td>
            <td>row1 Col2</td>
            <td>row1 Col3</td>
        </tr>
        <tr>
            <td>row2 Col1</td>
            <td>row2 Col2</td>
            <td>row2 Col3</td>
        </tr>
        <tr>
            <td>row3 Col1</td>
            <td>row3 Col2</td>
            <td><a href="http://www.jquery2dotnet.com/">http://www.jquery2dotnet.com/</a>
            </td>
        </tr>
    </table>
</div>
</body>
</html>

答案 3 :(得分:1)

您可以使用此插件将表格导出为.xlsx

http://sheetjs.com/demos/table.html