2010-06-15 8 views
8

Ich möchte ein Import-Skript, mit dem Benutzer ihre Excel-Datei (Erweiterung nicht wichtig) in meine PHP-Anwendung hochladen können.Importieren von Excel-Dateien mit Bild in PHP/MySQL

Die Anwendung sollte eine Liste von Elementen (so weit so gut) reconcise.

Die Schwierigkeit in diesem Fall ist, dass die Excel-Dateien Bilder enthalten ...

ich Informationen über PHPExcel Bibliothek gelesen haben, aber es sagt nichts über Bilder.

Irgendwelche Ideen?

Antwort

1

PHPExcel tut Bilder unterstützen, obwohl es noch nicht Diagramme unterstützen

EDIT

Diagramm Leser Unterstützung für Excel 2007+ in Version XLSX-Dateien hinzugefügt 1.7.7 von PHPExcel

+0

Aber wie bekommen Sie die Bilder ?! – coderama

+0

@RD: Ich habe auch eine Lösung für den Zugriff auf Bilder gegeben. –

14

Sie können auf Bilder unter PHPExcel library zugreifen.

Zum Importieren von Bildern:

$objPHPExcel = PHPExcel_IOFactory::load("MyExcelFile.xls"); 

foreach ($objPHPExcel->getSheetByName("My Sheet")->getDrawingCollection() as $drawing) { 
    if ($drawing instanceof PHPExcel_Worksheet_MemoryDrawing) { 
     ob_start(); 
     call_user_func(
      $drawing->getRenderingFunction(), 
      $drawing->getImageResource() 
     ); 
     $imageContents = ob_get_contents(); 
     ob_end_clean(); 
    } 
} 

Dann wird $ imageContents die Bilddaten enthalten, die Sie ausgeben können oder als Datei speichern usw. Sie diese Frage sehen: PHPExcel: How to insert an image in the first page header and enlarge it to fit it's content?

Für Zugreifen auf Bilder:

ArrayObject aller Bildobjekte im aktiven Arbeitsblatt wird zurückgegeben n von:

$objPHPExcel->getActiveSheet()->getDrawingCollection() ; 

werden diese Objekte entweder PHPExcel_Worksheet_Drawing oder PHPExcel_Worksheet_MemoryDrawing Objekte sein: Sie erkennen können, welche is_a() verwenden. Sie können dann die für diese Klasse geeigneten Methoden verwenden (wie in der API beschrieben), um entweder die Bilddaten aus der Datei (für PHPExcel_Worksheet_Drawing-Objekte) oder direkt aus dem PHPExcel_Worksheet_MemoryDrawing-Objekt selbst zu lesen. Die Methoden getName() und getDescription() können verwendet werden, um die relevanten Werte für das Bildobjekt abzurufen.

Jetzt ist es auch möglich, Bildobjekte mit Druckschriften zugeordnet haben:

$objPHPExcel->getActiveSheet()->getHeaderFooter()->getImages() 

verwendet werden können Bilder aus der Kopf-/Fußzeile abrufen. Dies ist ein Array von PHPExcel_Worksheet_HeaderFooterDrawing-Objekten. Alle PHPExcel_Worksheet_Drawing-Methoden können verwendet werden, um die Bilddatei von diesen Objekten zu extrahieren.

+0

@RD: Ist dein Problem gelöst? Sie haben keine Antwort gegeben, deshalb kommentiere ich. –

1

Das Importieren von Daten aus Excel (oder einem anderen Programm, das eine Textdatei erzeugen kann) ist sehr einfach mit dem Befehl LOAD DATA von der MySQL-Eingabeaufforderung.

1) Speichern Sie Ihre Excel-Daten als CSV-Datei (in Excel 2007 mit Speichern unter) Überprüfen Sie die gespeicherte Datei mit einem Texteditor wie Editor, um zu sehen, was es tatsächlich aussieht, dh welche Trennzeichen verwendet wurde usw.

2) LOAD DATEN LOKALES INFIL 'C: \ temp \ yourfile.csv' INTO TABLE Datenbank.Tabelle FIELDS TERMINATED BY ';' ENCLOSED VON '' 'LINES TERMINATED VON' \ r \ n '(field1, field2);

3) zum Speichern von Bild zu haben TO_BASE64

Geschehen zu verwenden!

Reference