簡體   English   中英

在單獨的工作表中將HTML表導出到Excel(.xls)

[英]Exporting HTML tables to Excel (.xls) in a separate sheet

我有一個包含表視圖的簡單HTML頁面(由外部應用程序生成)。 我試圖從頁面中刪除表格並將它們放在Excel工作簿中。 我已經設法使用此處提供的方法將整個HTML內容放在工作簿中。

相關問題的代碼:

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) {
    if (!table.nodeType) table = document.getElementById(table)
    var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML}
    window.location.href = uri + base64(format(template, ctx))
  }
})()

但是,該方法不支持多個電子表格。 我需要的是在同一個Excel工作簿中的每個HTML表格中都有自己的SpreadSheet。 像這樣的東西: 在此輸入圖像描述

我試圖用兩個電子表格創建一個示例Excel文檔,然后通過查看.html格式的導出對其進行反向工程。 不幸的是,我無法理解如何重新創建工作簿和工作表之間的連接。

據我所知, format()函數將工作表數據和Excel模板的“魔法”組合起來。 這個功能對我來說看起來很神秘,所以我不知道如何修改它。

作為終極游戲我需要的是有可能打電話。 tableToExcel(document.getElementsByTagName('table'), 'Workbook Name');

任何想法,如果這是可能的,如果是這樣 - 如何實現它?

查看此博客文章: http ://www.kubilayerdogan.net/?p = 218

 $(document).ready(function() {
    $("#btnExport").click(function(e) {
        //getting values of current time for generating the file name
        var dt = new Date();
        var day = dt.getDate();
        var month = dt.getMonth() + 1;
        var year = dt.getFullYear();
        var hour = dt.getHours();
        var mins = dt.getMinutes();
        var postfix = day + "." + month + "." + year + "_" + hour + "." + mins;
        //creating a temporary HTML link element (they support setting file names)
        var a = document.createElement('a');
        //getting data from our div that contains the HTML table
        var data_type = 'data:application/vnd.ms-excel';
        var table_div = document.getElementById('dvData');
        var table_html = table_div.outerHTML.replace(/ /g, '%20');
        a.href = data_type + ', ' + table_html;
        //setting the file name
        a.download = 'exported_table_' + postfix + '.xls';
        //triggering the function
        a.click();
        //just in case, prevent default behaviour
        e.preventDefault();
    });
});

你可以在jsfiddle中看到它的運作: http//jsfiddle.net/kublaios/8ZQN4/1/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM