2017-01-04 32 views
1

我正在使用JQUERY的幫助將腳本導出爲ex​​cel的腳本。問題在於,html頁面包含一些帶有重音的西班牙字符,這些字符在Excel文件中沒有正確編碼。但在HTML文件上,他們很好。將html表導出爲使用西班牙字符excel

這裏是我的html頁面的腳本:

<!DOCTYPE html> 
    <html lang="es"> 
     <head> 
     <meta charset="utf-8"> 
     <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
</head> 
<body> 

<form action="exporttoexcel.php" method="post" 
onsubmit='$("#datatodisplay").val($("<div>").append($("#ReportTable").eq(0).clone()).html())'> 
    <table id="ReportTable" width="600" cellpadding="2" cellspacing="2" class="myClass"> 
    <tr> 
     <th>First Name</th> 
     <th>Last Name</th> 
     <th>Country</th> 
    </tr> 
    <tr> 
     <td><center> 
      investigación 
     </center></td> 
     <td><center> 
      investigación 
     </center></td> 
     <td><center> 
      investigación 
     </center></td> 
    </tr> 
    </table> 
    <table width="600px" cellpadding="2" cellspacing="2" border="0"> 
    <tr> 
     <td>&nbsp;</td> 
    </tr> 
    <tr> 
     <td align="center"><input type="hidden" id="datatodisplay" name="datatodisplay"> 
     <input type="submit" value="Export to Excel"> 
     </td> 
    </tr> 
    </table> 
    </form> 

和PHP的表單處理代碼如下:解決這種情況

<?php 
header("Pragma: no-cache"); 
header('Content-Encoding: UTF-8'); 
header('Content-Type: application/force-download; charset=utf-8'); 
header('Content-disposition: attachment; filename=export.xls'); 
// Fix for IE bug in download. 
header("Pragma: "); 
header("Cache-Control: "); 
echo $_REQUEST['datatodisplay']; 
?> 

任何幫助是值得歡迎的。謝謝!

+0

爲什麼不在表單標籤中包含:accept-charset ='utf-8'? – roetnig

+0

相關:[將HTML表格導出到Excel時編碼UTF-8](http://stackoverflow.com/questions/25730008/encoding-utf-8-when-exporting-html-table-to-excel/25730640#25730640) – roetnig

回答

0
header("Content-Type: application/vnd.ms-excel; charset=utf-8"); 
header("Content-type: application/x-msexcel; charset=utf-8"); 
header("Pragma: no-cache"); 
header('Content-Encoding: UTF-8'); 
header ("Content-Disposition: attachment; filename=\"$file_name"); 
header ("Content-Description: Generated Report"); 

if (mb_detect_encoding($content) == 'UTF-8') { 
    $content = mb_convert_encoding($content , "HTML-ENTITIES", "UTF-8"); 
} 

echo $content; 
+0

使用php代碼,您可以使用任何語言導出excel。如果您有任何意見,請在下面發帖 –

1

這篇文章有點老了,但我有你的問題的答案,我希望能爲其他有類似問題的人服務。

<meta http-equiv="content-type" content="application/vnd.ms-excel; charset=UTF-8"> 

你可以注意到,在我的情況下,我使用了Java的功能,我提到了

我的Java腳本函數內部如下

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"><meta http-equiv="content-type" content="application/vnd.ms-excel; charset=UTF-8"><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)) 
     } 
    })() 

此方法在調用HTML代碼如下:

<!-- /.panel-body --> 
      <div class="panel-body" id="tablaFechaSalida"> 
       <input hidden="hidden" id="exporTabla2" type="button" class="btn btn-success" onclick="tableToExcel('tablaFechaSalida', 'Reporte Decretos')" value="Exportar a Excel">     
       <table id="tabla2" class="table table-bordered"> 
        <thead id="Cabecera2"> 
         <tr> 
          <th colspan="8" align="center">DECRETO ALCALDICIO</th> 
         </tr> 
         <tr> 
          <th><div style="width: 100px">N° Decreto</div></th> 
          <th><div style="width: 80px">Año</div></th> 
          <th><div style="width: 140px">Ingreso</div></th> 
          <th><div style="width: 140px">Salida</div></th> 
          <th><div style="width: 500px">Proveedor</div></th> 
          <th><div style="width: 140px">Unidad</div></th> 
          <th><div style="width: 1000px">Observacion</div></th> 
          <th><div style="width: 80px">Tipo</div></th> 
         </tr> 
        </thead> 
        <tbody id="Cuerpo2"></tbody> 
       </table> 
       <!-- /.table-responsive --> 
      </div> 
      <!-- /.panel-body -->