php-excel-reader - problem mit UTF-8
Ich bin mit php-excel-reader 2.21 für die Konvertierung XLS-Datei in CSV. Ich schrieb ein einfaches Skript, das zu tun, aber ich habe einige Probleme mit unicode-Zeichen. Es muss nicht die Rückgabe von Werten aus einigen Zellen.
Zum Beispiel, dass es keine Probleme mit Zelle Inhalt ceník položek
habe aber Probleme mit nákup
, VÝROBCE
, PÁS
, HRUBÝ
,NÁKLADNÍ
und einige andere. In diesen Zellen gibt es einen leeren Wert (""
).
Hier ist der code-snippet, das ich für die Konvertierung:
<?php
set_time_limit(120);
require_once 'excel_reader2.php';
$data = new Spreadsheet_Excel_Reader("cenik.xls", false, 'UTF-8');
$f = fopen('file.csv', 'w');
for($row = 1; $row <= $data->rowcount(); $row++)
{
$out = '';
for($col = 1; $col <= $data->colcount(); $col++)
{
$val = $data->val($row,$col);
//escape " and \ characters inside the cell
$escaped = preg_replace(array('#”#u', '#\\\\#u', '#[”"]#u'), array('"', '\\\\\\\\', '\"'), $val);
if(empty($val))
$out .= ',';
else
$out .= '"' . $escaped . '",';
}
//remove last comma (,)
fwrite($f, substr($out, 0, -1));
fwrite($f, "\n");
}
fclose($f);
?>
Beachten Sie, dass die Zelle und Zeile Indizes beginnt 1. Irgendwelche Vorschläge?
Kann jemand sagen, dass Die Antwort ist mehr anwendbar, oder der richtige Weg? Herr Cyphers Oder @thuclh die Antwort ist ideal?
InformationsquelleAutor Viktor Stískala | 2010-09-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hoffe, es ist das gleiche problem wie ich hatte:
In excel_reader2.php on line 1120, ersetzen
mit
Sollte das beheben, aber ich schlage vor, Sie verwenden eine andere excel-reader, wie PHPExcel, um Probleme zu vermeiden, wie diese.
Beachten Sie, dass Sie benötigen
iconv
- Erweiterung auf dem server aktiviert.(Dies ist eine andere Frage und sollte GESONDERT ausgewiesen.)
Gearbeitet. Hatte aber ersetzen Sie "cp1250" für "iso-8859-1".
Welchen Wert sollte ich ersetzen Sie "cp1250", wenn ich Lesen möchte chinesischen Zeichen? Ich hatte versucht, 'cp950', 'iso-8859-1' as @AndréMorales Vorschlag, aber noch kein Glück.
Danke! Funktioniert perfekt.
InformationsquelleAutor cypher
Ich hat die Antwort für dieses problem, verwenden Sie php_excel_reader wie üblich!
Fügen Sie eine Funktion hinzu, um Spreadsheet_Excel_Reader Klasse:
Und fügen Sie folgende Zeile 1120:
$retstr = $this->seems_utf8($retstr)?$retstr:utf8_encode($retstr);
Fertig!
Können Sie Datei-php_excel_reader, dass ich ändern!
Download hier : Datei excel_reader2.php
Verwenden Sie wie üblich mit Original-excel-reader
Super..! u mich gerettet... danke u sehr viel !
utf8_encode() akzeptiert Strings in ISO-8859-1 auf und wandelt Sie in utf-8. Aber wie können Sie garantieren, dass $retstr wird immer entweder in ISO-8859-1 oder UTF8?
Ich hatte versucht, aber es funktioniert nicht mit chinesischen Zeichen 🙁
InformationsquelleAutor thuclh