Ursprünglicher Autor: Podcast auf dem Eisberg Als ich diesen Artikel sah, war ich sehr überrascht von der Geduld des ursprünglichen Autors. Obwohl wir einige im täglichen Leben verwenden, werden sie nicht alle vom Autor aufgeführt. Beim Schreiben von Excel habe ich verwendet. Bibliothek, ich habe auch den Pack-Header verwendet, und ich habe auch diejenigen verwendet, die Smarty verwenden, um einfach XML zu ersetzen, ganz zu schweigen von CSV. hehe. (Ich werde nicht über die COM-Methode sprechen. Es gibt zu viele davon, die lesbar sind. Ich habe auch Artikel über die Verwendung von WPS zum Generieren von Wörtern usw. geschrieben.)
Aber als ich las, habe ich nur einen verwendet und vergessen, was es war, also musste ich zurückgehen und den Code lesen. Da es auf dem Prinzip der Kreditaufnahme basiert, kann ich mich nicht daran erinnern.
Ursprüngliche Adresse: http://xinsync.xju.edu.cn/index.php/archives/3858
Ursprünglicher Inhalt:
Vor kurzem musste ich aufgrund von Projektanforderungen ein Modul entwickeln, um einige Daten im System nach Excel zu exportieren, sie zu ändern und sie dann wieder in das System zu importieren. Ich habe die Gelegenheit genutzt, etwas darüber zu recherchieren, und hier sind einige Zusammenfassungen.
Grundsätzlich gibt es zwei Arten von exportierten Dateien:
1: Excel-ähnliches Format. Dies liegt lediglich daran, dass Excel eine starke Kompatibilität aufweist und korrekt geöffnet werden kann. Nachdem Sie eine solche Datei geändert und anschließend gespeichert haben, werden Sie normalerweise gefragt, ob Sie sie in eine Excel-Datei konvertieren möchten.
Vorteile: Einfach.
Nachteile: Das Generieren des Formats ist schwierig. Wenn es für den Import verwendet wird, müssen Sie das entsprechende Programm selbst schreiben.
2: Excel-Format, entsprechend Excel-ähnlich, die mit dieser Methode generierte Datei kommt dem echten Excel-Format näher.
Wenn beim Exportieren von Chinesisch verstümmelte Zeichen angezeigt werden, können Sie versuchen, die Zeichenfolge in gb2312 zu konvertieren. Folgendes konvertiert beispielsweise $yourStr von utf-8 in gb2312:
gb2312
“, „UTF-8“, $yourStr);
1. PHP-Export nach Excel
1: Die erste Empfehlung ist das äußerst beliebte PHPExcel, offizielle Website: http://www.codeplex.com/PHPExcel
Es kann importiert und exportiert werden und kann in das Office 2007-Format exportiert werden, das auch mit 2003 kompatibel ist.
Das heruntergeladene Paket enthält Dokumente und Beispiele, die Sie selbst studieren können.
Hier ist ein Beispiel für das Kopieren eines Absatzes:
PHP-Code
<?php
/**
* PHPExcel
*
* Copyright (C) 2006 - 2007 PHPExcel
*
* Bei dieser Bibliothek handelt es sich um kostenlose Software; Sie können sie weiterverbreiten und/oder
* Ändern Sie es gemäß den Bedingungen der GNU Lesser General Public
* Lizenz wie von der Free Software Foundation veröffentlicht;
* Version 2.1 der Lizenz oder (nach Ihrer Wahl) eine spätere Version.
*
* Diese Bibliothek wird in der Hoffnung verteilt, dass sie nützlich sein wird,
* jedoch OHNE JEGLICHE GARANTIE; auch ohne die stillschweigende Garantie von
* MARKTGÄNGIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. Siehe GNU
*Lesser General Public License für weitere Details.
*
* Sie sollten ein Exemplar der GNU Lesser General Public erhalten haben
* Lizenz zusammen mit dieser Bibliothek; wenn nicht, schreiben Sie an die Freie Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* @category PHPExcel
* @package PHPExcel
* @copyright Copyright (c) 2006 - 2007 PHPExcel ( http://www.codeplex.com/PHPExcel )
* @license http://www.gnu.org/licenses/lgpl.txt LGPL
* @Version 1.5.0, 23.10.2007
*/
/** Fehlerberichterstattung */
error_reporting(E_ALL);
/** Pfad einschließen **/
set_include_path(get_include_path() . PATH_SEPARATOR . '../Classes/');
/** PHPExcel */
include 'PHPExcel.php';
/** PHPExcel_Writer_Excel2007 */
include 'PHPExcel/Writer/Excel2007.php';
// Neues PHPExcel-Objekt erstellen
echo date('H:i:s') ” Neues PHPExcel-Objekt erstellenn“;
$objPHPExcel = new PHPExcel();
// Eigenschaften festlegen
echo date('H:i:s') ” Eigenschaften festlegenn“;
$objPHPExcel->getProperties()->setCreator("Maarten Balliauw");
$objPHPExcel->getProperties()->setLastModifiedBy(“Maarten Balliauw“);
$objPHPExcel->getProperties()->setTitle(“Office 2007 XLSX Test Document“);
$objPHPExcel->getProperties()->setSubject(“Office 2007 XLSX Test Document“);
$objPHPExcel->getProperties()->setDescrīption("Testdokument für Office 2007 XLSX, generiert mit PHP-Klassen.");
$objPHPExcel->getProperties()->setKeywords(“office 2007 openxml php“);
$objPHPExcel->getProperties()->setCategory(“Testergebnisdatei“);
//Einige Daten hinzufügen
echo date('H:i:s') ”Einige Daten hinzufügenn”;
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->setCellValue('A1′, 'Hello');
$objPHPExcel->getActiveSheet()->setCellValue('B2′, 'world!');
$objPHPExcel->getActiveSheet()->setCellValue('C1′, 'Hello');
$objPHPExcel->getActiveSheet()->setCellValue('D2′, 'world!');
// Blatt umbenennen
echo date('H:i:s') ” Blatt umbenennenn“;
$objPHPExcel->getActiveSheet()->setTitle('Simple');
// Aktiven Blattindex auf das erste Blatt setzen, sodass Excel dieses als erstes Blatt öffnet
$objPHPExcel->setActiveSheetIndex(0);
// Excel 2007-Datei speichern
echo date('H:i:s') ” In Excel2007-Format schreibenn“;
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter->save(str_replace('.php', '.xlsx', __FILE__));
// Echo fertig
echo date('H:i:s') ”Schreiben der Datei abgeschlossen.rn”;
2. Verwenden Sie die Download-Adresse der Klasse Spreadsheet_Excel_Writer von Pear: http://pear.php.net/package/Spreadsheet_Excel_Writer
Diese Klasse hängt von OLE ab, Download-Adresse: http://pear.php.net/package/OLE
Es ist zu beachten, dass das Format der exportierten Excel-Datei relativ alt ist. Wenn Sie sie nach der Änderung speichern, werden Sie gefragt, ob Sie sie in ein neueres Format konvertieren möchten.
Aber Sie können das Format festlegen, was sehr leistungsfähig ist.
PHP-Code
<?php
require_once 'Spreadsheet/Excel/Writer.php';
// Eine Arbeitsmappe erstellen
$workbook = new Spreadsheet_Excel_Writer();
// Senden von HTTP-Headern
$workbook->send('test.xls');
// Arbeitsblatt erstellen
$worksheet =& $workbook->addWorksheet('Mein erstes Arbeitsblatt');
//Die tatsächlichen Daten
$worksheet->write(0, 0, 'Name');
$worksheet->write(0, 1, 'Alter');
$worksheet->write(1, 0, 'John Smith');
$worksheet->write(1, 1, 30);
$worksheet->write(2, 0, 'Johann Schmidt');
$worksheet->write(2, 1, 31);
$worksheet->write(3, 0, 'Juan Herrera');
$worksheet->write(3, 1, 32);
// Lass uns die Datei senden
$workbook->close();
?>
3: Verwenden Sie smarty, um XML- oder HTML-Dateiunterstützungsformate zu generieren, die den Excel-Spezifikationen entsprechen, was eine perfekte Exportlösung darstellt. Allerdings handelt es sich bei der exportierten Datei im Wesentlichen um eine XML-Datei. Wenn sie für den Import verwendet wird, muss sie separat verarbeitet werden.
Weitere Informationen finden Sie im Beitrag von rardge hero: http://bbs.chinaunix.net/viewthread.php?tid=745757.
Es ist zu beachten, dass es am besten ist, die Anzahl der Zeilen in der exportierten Tabelle einzugeben, wenn sie unsicher ist „ss:“ in der Vorlage: Löschen Sie Dinge wie ExpandedColumnCount=“5″ ss:ExpandedRowCount=“21″“.
4. Verwenden Sie die Pack-Funktion, um die Satzumbruchsymbole auszudrucken, die dem Excel-Standardformat ähneln. Nach der Änderung und Speicherung in Office 2003 wird keine Eingabeaufforderung angezeigt.
Der Nachteil ist, dass es kein Format hat.
PHP-Code
<?php
// Header senden
header("Pragma: public");
header("Läuft ab: 0");
header("Cache-Kontrolle: muss erneut validiert werden, Nachprüfung=0, Vorprüfung=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: Anwendung/Download");;
header(“Content-Disposition: attachment;filename=test.xls“);
header("Content-Transfer-Encoding: binär");
//XLS-Datenzelle
xlsBOF();
xlsWriteLabel(1,0,"Meine Excel-Zeile eins");
xlsWriteLabel(2,0,"Meine Excel-Zeile zwei: ");
xlsWriteLabel(2,1,"Hallo zusammen");
xlsEOF();
Funktion xlsBOF() {
echo pack("ssssss", 0×809, 0×8, 0×0, 0×10, 0×0, 0×0);
zurückkehren;
}
Funktion xlsEOF() {
echo pack("ss", 0×0A, 0×00);
zurückkehren;
}
Funktion xlsWriteNumber($Row, $Col, $Value) {
echo pack("sssss", 0×203, 14, $Row, $Col, 0×0);
echo pack("d", $Value);
zurückkehren;
}
Funktion xlsWriteLabel($Row, $Col, $Value) {
$L = strlen($Value);
echo pack("ssssss", 0×204, 8 + $L, $Row, $Col, 0×0, $L);
echo $Value;
zurückkehren;
}
?>
Allerdings scheiterte der Autor bei der Verwendung auf einem 64-Bit-Linux-System und alle satzbrechenden Symbole wurden zu verstümmelten Zeichen.
5. Verwendung von Tabulatoren und Zeilenumbrüchen
Mit dem Tabulatorzeichen „t“ können Benutzer Spalten in derselben Zeile trennen, und mit dem Zeilenumbruchzeichen „tn“ kann die nächste Zeile geöffnet werden.
<?php
header("Content-Type: application/vnd.ms-execl");
header("Content-Disposition: attachment; filename=myExcel.xls");
header("Pragma: no-cache");
header("Läuft ab: 0");
/*erste Zeile*/
echo "Hallo"."t";
echo "world"."t";
echo „tn“;
/*Anfang der zweiten Zeile*/
echo „das ist die zweite Zeile.“t“;
echo „Hallo, hübsches Mädchen“.“t“;
echo „tn“;
?>
6. Verwenden Sie com
Wenn Ihr PHP das COM-Modul öffnen kann, können Sie es zum Exportieren von Excel-Dateien verwenden
PHP-Code
<?PHP
$filename = „c:/spreadhseet/test.xls“;
$sheet1 = 1;
$sheet2 = „sheet2“;
$excel_app = new COM("Excel.application") oder Die ("Keine Verbindung hergestellt");
print „Anwendungsname: {$excel_app->Application->value}n“;
print „Geladene Version: {$excel_app->Application->version}n“;
$Workbook = $excel_app->Workbooks->Open(“$filename“) or Die(“Did not open $filename $Workbook“);
$Worksheet = $Workbook->Worksheets($sheet1);
$Worksheet->aktivieren;
$excel_cell = $Worksheet->Range(“C4″);
$excel_cell->activate;
$excel_result = $excel_cell->value;
print „$excel_resultn“;
$Worksheet = $Workbook->Worksheets($sheet2);
$Worksheet->aktivieren;
$excel_cell = $Worksheet->Range(“C4″);
$excel_cell->activate;
$excel_result = $excel_cell->value;
print „$excel_resultn“;
#So schließen Sie alle Excel-Instanzen:
$Workbook->Schließen;
unset($Worksheet);
unset($Workbook);
$excel_app->Workbooks->Close();
$excel_app->Quit();
unset($excel_app);
?>
Ein besseres Beispiel: http://blog.chinaunix.net/u/16928/showart_387171.html
1. PHP-Import in Excel
1: Verwenden Sie weiterhin PHPExcel, offizielle Website: http://www.codeplex.com/PHPExcel .
2: Verwenden Sie PHP-ExcelReader, Download-Adresse: http://sourceforge.net/projects/phpexcelreader
Beispiel:
PHP-Code
<?php
require_once 'Excel/reader.php';
// ExcelFile($filename, $encoding);
$data = new Spreadsheet_Excel_Reader();
// Ausgabekodierung festlegen.
$data->setOutputEncoding('utf8′);
$data->read('jxlrwtest.xls');
error_reporting(E_ALL ^ E_NOTICE);
for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {
for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) {
echo """.$data->sheets[0]['cells'][$i][$j]."",";
}
echo „n“;
}
?>
----------
Diese Website übernimmt die Creative Commons-Urheberrechtsvereinbarung, die Namensnennung, nichtkommerzielle und konsistente Nutzung erfordert. Diese Website begrüßt jeden nichtkommerziellen Nachdruck, muss jedoch darauf hinweisen, dass sie von „Uncle Fatty's Simple Life“ stammt, den Originallink beibehalten und auch Geben Sie den Originaltitel und den Link an.