[英]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.