如何将html表格转换为excel与多个工作表? [英] How to convert html table to excel with multiple sheet?
本文介绍了如何将html表格转换为excel与多个工作表?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何将多个html表格转换为包含多个工作表的Excel工作表?你能帮忙解决这个问题吗?
我的示例 https://jsfiddle.net/kdkd/5p22gdag/
函数tablesToExcel(){
{
var tab_text =< table border ='2px'>< tr bgcolor ='#87AFC6'>;
var textRange; var j = 0;
tab = document.getElementById('tbl2'); (j = 0; j tab_text = tab_text + tab.rows [j])的表格ID
。 innerHTML +< / tr>;
// tab_text = tab_text +< / tr>;
}
tab_text = tab_text +< / table>;
var ua = window.navigator.userAgent;
var msie = ua.indexOf(MSIE);
if(msie> 0 || !! navigator.userAgent.match(/Trident.*rv\:11\./))//如果Internet Explorer
{
txtArea1.document.open(txt / html,replace);
txtArea1.document.write(tab_text);
txtArea1.document.close();
txtArea1.focus();
sa = txtArea1.document.execCommand(SaveAs,真,说谢谢Sumit.xls);
}
else //其他浏览器未在IE 11上测试
sa = window.open('data:application / vnd.ms-excel,'+ encodeURIComponent(tab_text));
return(sa);
}
}
解决方案
您可以按照以下方式进行操作: 以下是完整示例
Html :
< table id =tbl1class = table2excel >
< tr>
< td>产品< / td>
< td>价格< / td>
< td>可用< / td>
< td>计数< / td>
< / tr>
< tr>
< td> Bred< / td>
< td> 1< / td>
< td> 2< / td>
< td> 3< / td>
< / tr>
< tr>
< td>黄油< / td>
< td> 4< / td>
< td> 5< / td>
< td> 6< / td>
< / tr>
< / table>
< hr>
< table id =tbl2class =table2excel>
< tr>
< td>产品< / td>
< td>价格< / td>
< td>可用< / td>
< td>计数< / td>
< / tr>
< tr>
< td> Bred< / td>
< td> 7< / td>
< td> 8< / td>
< td> 9< / td>
< / tr>
< tr>
< td>黄油< / td>
< td> 14< / td>
< td> 15< / td>
< td> 16< / td>
< / tr>
< / table>
Javascript:
var tablesToExcel =(function(){
var uri ='data:application / vnd.ms-excel; base64,'
,tmplWorkbookXML ='<?xml version =1.0 ?><?mso-application progid =Excel.Sheet?>< Workbook xmlns =urn:schemas-microsoft-com:office:spreadsheetxmlns:ss =urn:schemas-microsoft-com :office:spreadsheet>'
+'< DocumentProperties xmlns =urn:schemas-microsoft-com:office:office>< Author> Axel Richter< / Author>< Created> {created < / Created>< / DocumentProperties>'
+'< Styles>'
+'< Style ss:ID =Currency>< NumberFormat ss:Format = < / NumberFormat>< / Style>'
+'< Style ss:ID =Date>< NumberFormat ss:Format =Medium Date>< / NumberFormat> < / style>'
+'< / Styles>'
+'{worksheets}< / Workbook>'
,tmplWorkshee tXML ='< Worksheet ss:Name ={nameWS}>< Table> {rows}< / Table>< / Worksheet>'
,tmplCellXML ='< Cell {attributeStyleID} {属性类型}>< Data ss:Type ={nameType}> {data}< / Data>< / Cell>'
,base64 = function(s){return window.btoa(unescape (encodeURIComponent(s)))}
,format = function(s,c){return s.replace(/ {(\ w +)} / g,function(m,p){return c [p] ; })}
返回函数(表,wsnames,wbname,appname){
var ctx =;
var workbookXML =;
var worksheetsXML =;
var rowsXML =;如果(!tables [i] .nodeType)tables [i] = document.getElementById(tables [i]),
(var i = 0; i< tables.length; i ++)一世]); (var k = 0; j< tables [i] .rows.length; j ++){
rowsXML + ='< Row>'
for(var k = 0; k var dataType = tables [i] .rows [j] .cells [k] .getAttribute(data-type) ;
var dataStyle = tables [i] .rows [j] .cells [k] .getAttribute(data-style);
var dataValue = tables [i] .rows [j] .cells [k] .getAttribute(data-value);
dataValue =(dataValue)?dataValue:tables [i] .rows [j] .cells [k] .innerHTML;
var dataFormula = tables [i] .rows [j] .cells [k] .getAttribute(data-formula);
dataFormula =(dataFormula)?dataFormula:(appname =='Calc'&& amp; dataType =='DateTime')?dataValue:null;
ctx = {attributeStyleID:(dataStyle =='Currency'|| dataStyle =='Date')?'ss:StyleID =''+ dataStyle +'':''
,nameType:(dataType =='Number'|| dataType =='DateTime'|| dataType =='Boolean'|| dataType =='Error')?dataType:'String'
,data:(dataFormula)?'': dataValue
,attributeFormula:(dataFormula)?'ss:Formula =''+ dataFormula +'':''
};
rowsXML + =格式(tmplCellXML,ctx);
}
rowsXML + ='< / Row>'
}
ctx = {rows:rowsXML,nameWS:wsnames [i] || 'Sheet'+ i};
worksheetsXML + = format(tmplWorksheetXML,ctx);
rowsXML =;
}
ctx = {created:(new Date())。getTime(),worksheets:worksheetsXML};
workbookXML = format(tmplWorkbookXML,ctx);
var link = document.createElement(A);
link.href = uri + base64(workbookXML);
link.download = wbname || workbook.xls中;
link.target ='_blank';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
})();
How can I convert multiple html tables to an excel sheet with multiple worksheets? Could you please help into this.
My example https://jsfiddle.net/kdkd/5p22gdag/
function tablesToExcel() {
{
var tab_text = "<table border='2px'><tr bgcolor='#87AFC6'>";
var textRange; var j = 0;
tab = document.getElementById('tbl2'); // id of table
for (j = 0 ; j < tab.rows.length ; j++) {
tab_text = tab_text + tab.rows[j].innerHTML + "</tr>";
//tab_text=tab_text+"</tr>";
}
tab_text = tab_text + "</table>";
var ua = window.navigator.userAgent;
var msie = ua.indexOf("MSIE ");
if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) // If Internet Explorer
{
txtArea1.document.open("txt/html", "replace");
txtArea1.document.write(tab_text);
txtArea1.document.close();
txtArea1.focus();
sa = txtArea1.document.execCommand("SaveAs", true, "Say Thanks to Sumit.xls");
}
else //other browser not tested on IE 11
sa = window.open('data:application/vnd.ms-excel,' + encodeURIComponent(tab_text));
return (sa);
}
}
解决方案
You can do as below : Here is Full Example
Html :
<table id="tbl1" class="table2excel">
<tr>
<td>Product</td>
<td>Price</td>
<td>Available</td>
<td>Count</td>
</tr>
<tr>
<td>Bred</td>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>Butter</td>
<td>4 </td>
<td>5 </td>
<td >6 </td>
</tr>
</table>
<hr>
<table id="tbl2" class="table2excel">
<tr>
<td>Product</td>
<td>Price</td>
<td>Available</td>
<td>Count</td>
</tr>
<tr>
<td>Bred</td>
<td>7</td>
<td>8</td>
<td>9</td>
</tr>
<tr>
<td>Butter</td>
<td>14</td>
<td>15</td>
<td >16</td>
</tr>
</table>
<button onclick="tablesToExcel(['tbl1','tbl2'], ['ProductDay1','ProductDay2'], 'TestBook.xls', 'Excel')">Export to Excel</button>
Javascript:
var tablesToExcel = (function() {
var uri = 'data:application/vnd.ms-excel;base64,'
, tmplWorkbookXML = '<?xml version="1.0"?><?mso-application progid="Excel.Sheet"?><Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">'
+ '<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office"><Author>Axel Richter</Author><Created>{created}</Created></DocumentProperties>'
+ '<Styles>'
+ '<Style ss:ID="Currency"><NumberFormat ss:Format="Currency"></NumberFormat></Style>'
+ '<Style ss:ID="Date"><NumberFormat ss:Format="Medium Date"></NumberFormat></Style>'
+ '</Styles>'
+ '{worksheets}</Workbook>'
, tmplWorksheetXML = '<Worksheet ss:Name="{nameWS}"><Table>{rows}</Table></Worksheet>'
, tmplCellXML = '<Cell{attributeStyleID}{attributeFormula}><Data ss:Type="{nameType}">{data}</Data></Cell>'
, 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(tables, wsnames, wbname, appname) {
var ctx = "";
var workbookXML = "";
var worksheetsXML = "";
var rowsXML = "";
for (var i = 0; i < tables.length; i++) {
if (!tables[i].nodeType) tables[i] = document.getElementById(tables[i]);
for (var j = 0; j < tables[i].rows.length; j++) {
rowsXML += '<Row>'
for (var k = 0; k < tables[i].rows[j].cells.length; k++) {
var dataType = tables[i].rows[j].cells[k].getAttribute("data-type");
var dataStyle = tables[i].rows[j].cells[k].getAttribute("data-style");
var dataValue = tables[i].rows[j].cells[k].getAttribute("data-value");
dataValue = (dataValue)?dataValue:tables[i].rows[j].cells[k].innerHTML;
var dataFormula = tables[i].rows[j].cells[k].getAttribute("data-formula");
dataFormula = (dataFormula)?dataFormula:(appname=='Calc' && dataType=='DateTime')?dataValue:null;
ctx = { attributeStyleID: (dataStyle=='Currency' || dataStyle=='Date')?' ss:StyleID="'+dataStyle+'"':''
, nameType: (dataType=='Number' || dataType=='DateTime' || dataType=='Boolean' || dataType=='Error')?dataType:'String'
, data: (dataFormula)?'':dataValue
, attributeFormula: (dataFormula)?' ss:Formula="'+dataFormula+'"':''
};
rowsXML += format(tmplCellXML, ctx);
}
rowsXML += '</Row>'
}
ctx = {rows: rowsXML, nameWS: wsnames[i] || 'Sheet' + i};
worksheetsXML += format(tmplWorksheetXML, ctx);
rowsXML = "";
}
ctx = {created: (new Date()).getTime(), worksheets: worksheetsXML};
workbookXML = format(tmplWorkbookXML, ctx);
var link = document.createElement("A");
link.href = uri + base64(workbookXML);
link.download = wbname || 'Workbook.xls';
link.target = '_blank';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
})();
这篇关于如何将html表格转换为excel与多个工作表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文