2016-03-21 6 views
1

Derzeit habe ich eine Klasse für den Export zu Excel, es funktioniert perfekt für Englisch, jedoch in anderen codieren, z. Chinesische Schriftzeichen ist es falschFalsche codierte Zeichenfolge beim Exportieren der Excel mit PHP

codiert

https://github.com/bcit-ci/CodeIgniter/wiki/Export-to-Excel-2013

<?php 
if (!defined('BASEPATH')) 
    exit('No direct script access allowed'); 

/* 
* Excel library for Code Igniter applications 
* Based on: Derek Allard, Dark Horse Consulting, www.darkhorse.to, April 2006 
* Tweaked by: Moving.Paper June 2013 
*/ 

class Export { 

    function to_excel($array, $filename) { 
     header('Content-type: application/vnd.ms-excel'); 
     header('Content-Disposition: attachment; filename=' . $filename . '.xls'); 

     //Filter all keys, they'll be table headers 
     $h = array(); 
     foreach ($array->result_array() as $row) { 
      foreach ($row as $key => $val) { 
       if (!in_array($key, $h)) { 
        $h[] = $key; 
       } 
      } 
     } 
     //echo the entire table headers 
     echo '<table><tr>'; 
     foreach ($h as $key) { 
      $key = ucwords($key); 
      echo '<th>' . $key . '</th>'; 
     } 
     echo '</tr>'; 

     foreach ($array->result_array() as $row) { 
      echo '<tr>'; 
      foreach ($row as $val) 
       $this->writeRow($val); 
     } 
     echo '</tr>'; 
     echo '</table>'; 
    } 

    function writeRow($val) { 
     echo '<td>' . utf8_decode($val) . '</td>'; 
    } 

} 

die Versuchte hinzufügen

header("Content-type: text/html; charset=utf-8"); 

am Start der Funktion aber kein Glück

Dank viel für die Unterstützung.

Antwort

2

Statt einer benutzerdefinierten Klasse, verwendet PHPExcel und funktioniert perfekt

$this->load->library('PHPExcel'); 
     $this->load->library('PHPExcel/IOFactory'); 

     $objPHPExcel = new PHPExcel(); 
     $objPHPExcel->getProperties()->setTitle("Trial Report"); 

     // Assign cell values 
     $objPHPExcel->setActiveSheetIndex(0); 

     //Filter all keys, they'll be table headers 
     $h = array(); 
     foreach ($result as $row) { 
      foreach ($row as $key => $val) { 
       if (!in_array($key, $h)) { 
        $h[] = $key; 
       } 
      } 
     } 

     //Writing the first header row 
     foreach ($h as $key => $val) { 
      $val = ucwords($val); 
      $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($key, 1, $val); //first row is 1 
     } 

     $pos = 0; 
     foreach ($result as $r_key => $row) { 
      foreach ($row as $col) { 
       $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($pos, ($r_key + 2), $col); //skip the first row 
       $pos++; 
      } 
      $pos = 0; 
     } 

     $objWriter = IOFactory::createWriter($objPHPExcel, 'Excel5'); 

     header('Content-type: application/vnd.ms-excel'); 
     header('Content-Disposition: attachment; filename="export.xls"'); 
     $objWriter->save('php://output'); 
1

Für Traditionelles Chinesisch (Big5)

header("Content-type: text/html; charset=big5"); 

paar mehr:

Chinese Simplified (EUC) 
    ##charset=EUC-CN 
Chinese Simplified (GB2312) 
    ##charset=gb2312 
Chinese Simplified (HZ) 
    ##charset=hz-gb-2312 
Chinese Simplified (Mac) 
    ##charset=x-mac-chinesesimp 
Chinese Traditional (Big5) 
    ##charset=big5 
Chinese Traditional (CNS) 
    ##charset=x-Chinese-CNS 
Chinese Traditional (Eten) 
    ##charset=x-Chinese-Eten 
Chinese Traditional (Mac) 
    ##charset=x-mac-chinesetrad 
    ##charset=950 

here is some fixing details and how to tut ...

+0

Danke für die Hilfe. Hinzugefügt, aber kein Glück, immer noch "??" für chinesische Zeichen – user782104

+0

bro, versuchen Sie alle chinesischen Zeichensatz ich fügte hinzu, Sie könnten mich einige andere chinses lang aus diesen –

+0

lesen Sie aus dem Link ich fügte hinzu, es hat große Tutorial über Zeichensatz Verwendung –

Verwandte Themen