Heim >Backend-Entwicklung >PHP-Tutorial >So lesen Sie Excel-Dateien in PHP
Es gibt drei häufig verwendete Methoden zum Lesen von Excel mit PHP, jede mit ihren eigenen Vor- und Nachteilen. Ich persönlich empfehle die dritte Methode, da sie plattformübergreifend einsetzbar ist.
1. Lesen Sie das .csv-Format ein.
Konvertieren Sie .xls in das .csv-Textformat und verwenden Sie dann PHP, um die Datei zu analysieren, was sich nicht von der PHP-Textanalyse unterscheidet.
Vorteile: plattformübergreifend, relativ hohe Effizienz und kann lesen und schreiben.
Nachteile: Sie können nur .csv-Dateien direkt verwenden. Wenn Sie häufig .xls-Binärdateien akzeptieren, müssen Sie diese manuell konvertieren und können nicht automatisiert werden. Für eine Datei gibt es nur ein BLATT.
PHP verfügt über eine eigene Analysis.csv-Funktion: fgetcsv
array fgetcsv ( int $handle [, int $length [, string $delimiter [, string $enclosure]]] )
handle Ein gültiger Dateizeiger, der von fopen(), popen() oder fsockopen() generiert wird.
Länge (optional) muss größer sein als die längste Zeile in der CVS-Datei. Dieser Parameter ist in PHP 5 optional. Wenn dieser Parameter weggelassen wird (in PHP 5.0.4 und späteren Versionen auf 0 gesetzt), gibt es keine Begrenzung für die Länge, die Ausführungseffizienz kann jedoch beeinträchtigt werden.
delimiter (optional) legt das Feldtrennzeichen fest (nur ein Zeichen erlaubt), der Standardwert ist Komma.
enclosure (optional) legt das Feldumbruchzeichen fest (nur ein Zeichen erlaubt), der Standardwert sind doppelte Anführungszeichen. Dieser Parameter wurde in PHP 4.3.0 hinzugefügt. Ähnlich wie fgets(), außer dass fgetcsv() die gelesene Zeile analysiert, die Felder im CSV-Format findet und ein Array zurückgibt, das diese Felder enthält.
fgetcsv() gibt bei Fehler FALSE zurück, auch wenn das Ende der Datei erreicht wird.
Hinweis: Leere Zeilen in der CSV-Datei werden als Array mit einem einzelnen Nullfeld zurückgegeben und nicht als Fehler behandelt.
Natürlich können Sie den String auch manuell selbst analysieren.
Sie können die Zeilen auch mit der Funktion fputcsv in CSV formatieren und den Dateizeiger schreiben.
2. ODBC-verknüpfte Datenquelle
Vorteile: Unterstützt mehrere Formate, CVS, XLS usw. Unterstützt Lesen und Schreiben, verwendet die Standard-SQL-Sprache und ist nahezu identisch mit SQLSERVER- und MYSQL-Datenbanken.
Nachteile: Unterstützt Windows-Server
3. Benutzerdefinierte PHP-Klassen
Vorteile: Plattformübergreifend. Einige Klassen unterstützen Schreiboperationen. Unterstützt .xls-Binärdateien
Zu den häufig verwendeten Klassen gehören phpExcelReader und PHPExcel. Letzteres unterstützt Lesen und Schreiben, erfordert jedoch PHP5.2 oder höher.
phpExcelReader wird speziell zum Lesen von Dateien verwendet. Gibt ein Array zurück, das alle Inhalte der Tabelle enthält.
Informationen zur von dieser Klasse verwendeten Methode finden Sie in example.php in der komprimierten Datei, die von der Website heruntergeladen wurde.
Aber ich habe es heruntergeladen (Version 2009-03-30), es gibt zwei Punkte zu beachten:
Die folgende Zeile in Reader.php muss geändert werden
Änderung require_once 'Spreadsheet/Excel/Reader/OLERead.php';
Ändern Sie zu require_once 'oleread.inc'; setOutputEncoding('CP1251′);
ist $data->setOutputEncoding('CP936′);
modify nl2br(htmlentities($data->sheets[$sheet]['cells ' ][$row][$col]));
ist $table_output[$sheet] .= nl2br(htmlspecialchars($data->sheets[$sheet]['cells'][$row ] [$col]));
Sonst gibt es Probleme mit Chinesisch.
Für traditionelles Chinesisch kann es in CP950 geändert werden, und für Japanisch ist es CP932. Weitere Informationen finden Sie in den Codepage-Anweisungen.
Ändern Sie $data->read(’jxlrwtest.xls’) als Ihren eigenen Excel-Dateinamen. Die in der ZIP-Datei angehängte Datei jxlrwtest.xls sollte fehlerhaft sein.
Dies ist die Download-Adresse:
phpExcelReader: http://sourceforge.net/projects/phpexcelreader/
PHPExcel: http://www.codeplex.com/ PHPExcel /Wiki/View.aspx?title=Documents&referringTitle=Home
Manchmal ist es beim Schreiben eines Programms erforderlich, große Datenmengen in die Datenbank zu importieren, beispielsweise die Abfrage von Computertestergebnissen, Telefonbuchdaten usw. usw. werden im Allgemeinen in Excel gespeichert. Ja, zu diesem Zeitpunkt können wir die Daten in eine CSV-Datei exportieren und dann das folgende Programm verwenden, um Daten stapelweise im Hintergrund zu importieren.
Das Folgende ist nur der Hauptprogrammteil:
//Definieren Sie die Get-Time-Funktion
function getmicrotime(){
list ($usec, $sec) = explosion(" ",microtime());
return ((float)$usec + (float)$sec); ;?php
$time_start = getmicrotime();
include("db.inc.php");//Mit der Datenbank verbinden
$db=new testcsv;
$handle = fopen ("test.csv", "r");$sql="insert into scores(idcard,names,num,sex,nation,score) Values(";
while ($data = fgetcsv ($handle, 1000, ",")) {
$num = count ($data);
for ($c=0; $c < $num; $c++) {
if($c==$num-1){$sql=$ sql.$data[$c].")";break;}
$sql=$sql.$data[$c].",";
}
print „
“;
echo $sql."
";
$db->query($sql);
echo "sql语句执行成功!
";
$sql="insert into scores(idcard,names,num,sex,nation,score) Values(";
}
fclose ($handle);
$time_end = getmicrotime();
$time = $time_end - $time_start;
echo „程序执行时间:“.$time.“秒“;
?