如何将html表导出为xlsx文件

Erd*_*maz 6 javascript excel xls html-table xlsx

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

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

在这里我的HTML:

<table id="toExcel" class="uitable">
  <thead>
    <tr>
      <th>Kampanya Basligi</th>
      <th>Kampanya Türü</th>
      <th>Kampanya Baslangiç</th>
      <th>Kampanya Bitis</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>
Run Code Online (Sandbox Code Playgroud)

我的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>
Run Code Online (Sandbox Code Playgroud)

Tra*_*rke 8

一个伟大的导出客户端工具html表来xlsx,xls,csv,或者txtTABLEEXPORTclarketm().它是一个简单,易于实现,功能齐全的库,具有一系列可配置的属性和方法.

安装

$ npm install tableexport
Run Code Online (Sandbox Code Playgroud)

用法

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

// OR using jQuery

$("table").tableExport(); 
Run Code Online (Sandbox Code Playgroud)

文档

示例应用程序可帮助您入门

查看简明文档或者直接TableExport访问Github以获取完整的功能列表.

  • 不幸的是,它似乎不能处理格式化(即样式、CSS 等)数据。导出的是一个普通的、未格式化的 XLSX 文件。另请参阅:https://github.com/clarketm/TableExport/issues/125 (2认同)

L..*_*L.. 6

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

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


Adr*_*ien 2

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

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

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

让我们知道您在服务器上使用哪种语言,我们将能够向您推荐一些好的库。

  • @ErdenizKorkmaz – 从历史上看......这个“将是”正确的。对于所有现代浏览器,甚至许多旧版浏览器,这都很容易处理,尽管我不建议将其用于大量数据(由于性能原因)。查看我编写的库:clarketm/[`TableExport`](https://github.com/clarketm/TableExport); 它在幕后利用 SheetJS/[`js-xlsx`](https://github.com/SheetJS/js-xlsx) 来处理解析。 (4认同)