2013-06-17 43 views
22

Kullanıcı, 'Dışa Aktar' düğmesini tıklattığında sayfamdaki html tablosunu bir Excel'e vermem gerekiyor. Şimdi, Firefox'ta çalışan yığın taşması üzerinde bir çözüm buldum.html tablosunu Excel'e dışa aktarmak için Javascript

Export dynamic html table to excel in javascript in firefox browser

Şimdi, biz kimsenin ben sorunsuz başarıyla yanı dışa nasıl biliyorsa sormak istediğim işte kullanmak dilde ortak olan ö, ü, ö gibi özel karakterleri işlemez ? Eğer eklerseniz

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

} 
+0

Bu yöntemle, yalnızca sayfada görünür olan her şeyi dışa aktarabilirsiniz. Bu yaklaşımla iyi misin? – Candide

+0

Evet. Yapmaya çalıştığım şey budur. Bazen özel karakterler içeren isimler vardır ve bunlar doğru şekilde dışa aktarılmaz. Yani, hangi kodlamayı kullanmam gerektiğini bilmek istiyorum? – Tulips

+2

IE çalışmıyor .. – Nayeem

cevap

37

:

<meta http-equiv="content-type" content="text/plain; charset=UTF-8"/> 

o çalışmaya başlayacak belgenin başlığında beklendiği gibi: İşte

benim kodudur

<script type="text/javascript"> 
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]--><meta http-equiv="content-type" content="text/plain; charset=UTF-8"/></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)) 
    } 
})() 
</script> 

Updated Fiddle Here.

+0

@seroth IE kullandığınız için bu hatayı alıyorsunuz Bakudan

+0

Bu IE 11'de çalışmıyor. Dışarı aktar düğmesini tıklattığınızda, sayfa bekliyor. –

+6

"Download.xls dosya biçimi ve uzantısı eşleşmiyor" Bu son kullanıcılar orada görmek istemiyor ve Evet'i tıklatmak gibi bir sorundur .... –

3

F UTF 8 Dönüşüm ve Döviz Sembol İhracat bunu kullanın veya:

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 version="1.0" encoding="UTF-8" standalone="yes"?><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)) 
    } 
})() 
+0

benim için çalışıyor! Teşekkürler.. –

1

ShieldUI en export to excel işlevselliği zaten tüm özel karakterleri desteklemelidir.

İlgili konular