Birden Fazla Html Tablosunu Tek Excel Sayfasına Yazdırma

birden fazla html tablosunu excel olarak dışa aktarma

Normal bir HTML tablosunu excel olarak dışarı aktarabiliriz. Ancak sayfamızda birden fazla html tablosu varsa dışarı aktarmak sorun yaratabilir. Bunun için bir kaç js eklentisi olsa da eksi olduğu için istediğimiz gibi çalışmıyor. Aşağıda vereceğimiz kod bloğu her ne kadar uzun olsa da projenize göre değiştirilebilir.

Kod

				
					<script>

function toExcel() {

if ("ActiveXObject" in window) {
alert("This is Internet Explorer!");
} else {

var cache = {};
this.tmpl = function tmpl(str, data) {
var fn = !/\W/.test(str) ? cache[str] = cache[str] || tmpl(document.getElementById(str).innerHTML) :
new Function("obj",
"var p=[],print=function(){p.push.apply(p,arguments);};" +
"with(obj){p.push('" +
str.replace(/[\r\t\n]/g, " ")
.split("{{").join("\t")
.replace(/((^|}})[^\t]*)'/g, "$1\r")
.replace(/\t=(.*?)}}/g, "',$1,'")
.split("\t").join("');")
.split("}}").join("p.push('")
.split("\r").join("\\'") + "');}return p.join('');");
return data ? fn(data) : fn;
};
var tableToExcel = (function () {
var uri = 'data:application/vnd.ms-excel;charset=UTF-8;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]--><meta http-equiv="content-type" content="application/vnd.ms-excel; charset=UTF-8"></head><body>{{for(var i=0; i<tables.length;i++){ }}<table>{{=tables[i]}}</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 (tableList, name) {
if (!tableList.length > 0 && !tableList[0].nodeType) table = document.getElementsByClassName('table');
var tables = [];
for (var i = 0; i < tableList.length; i++) {
tables.push(tableList[i].innerHTML);
}
var ctx = {
worksheet: name || 'Worksheet',
tables: tables,
};
// window.location.href = uri + base64(tmpl(template, ctx));
var link = document.createElement("a");
link.download = "Html.xls";
link.href = uri + base64(tmpl(template, ctx));
link.click();
};
})();
tableToExcel(document.getElementsByTagName("table"), "Html Table");
}
}
</script>



				
			

Eğitimin, Eğlencenin ve Haberin Sitesi TEKNOKODİ

İlgili Yazılar