2010-06-15 6 views
8

Je veux faire un script d'importation qui permet aux utilisateurs de télécharger leur fichier Excel (extension pas important) à mon application PHP.Importer des fichiers Excel avec image dans php/mysql

L'application devrait reconiser une liste d'éléments (jusqu'ici tout va bien).

La difficulté dans ce cas est que les fichiers Excel contiennent des images ...

J'ai lu des informations sur la bibliothèque de PHPExcel mais il ne dit rien sur les images.

Des idées pour quelqu'un?

Répondre

1

PHPExcel supporte les images, bien qu'il ne supporte pas encore les cartes

EDIT

support lecteur graphique ajouté pour Excel 2007+ fichiers .xlsx dans la version 1.7.7 de PHPExcel

+0

Mais comment obtenez-vous les images ?! – coderama

+0

@RD: J'ai donné une solution pour accéder aux images aussi. –

14

Vous pouvez accéder aux images par PHPExcel library.

Pour importer des images:

$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(); 
    } 
} 

Alors $ imageContents contiendra les données d'image que vous pouvez de sortie ou enregistrer dans un fichier, etc. Vous pouvez voir cette question: PHPExcel: How to insert an image in the first page header and enlarge it to fit it's content?

Pour accéder aux images:

ArrayObject de tous les objets image de la feuille de calcul active va revenir n par:

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

Ces objets seront soit des objets PHPExcel_Worksheet_Drawing ou PHPExcel_Worksheet_MemoryDrawing: vous pouvez identifier en utilisant is_a(). Vous pouvez ensuite utiliser les méthodes appropriées à cette classe (comme décrit dans l'API) pour lire les données d'image à partir du fichier (pour les objets PHPExcel_Worksheet_Drawing) ou directement à partir de l'objet PHPExcel_Worksheet_MemoryDrawing lui-même. Les méthodes getName() et getDescription() peuvent être utilisées pour extraire les valeurs pertinentes de l'objet image.

Maintenant, il est aussi possible d'avoir des objets d'image associés à des en-têtes d'impression:

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

peut être utilisé pour récupérer des images de l'en-tête/pied de page. C'est un tableau d'objets PHPExcel_Worksheet_HeaderFooterDrawing. Toutes les méthodes PHPExcel_Worksheet_Drawing peuvent être utilisées pour extraire le fichier image de ces objets.

+0

@RD: Votre problème est-il résolu? Vous n'avez donné aucune réponse, c'est pourquoi je commente. –

1

L'importation de données à partir d'Excel (ou de tout autre programme pouvant produire un fichier texte) est très simple à l'aide de la commande LOAD DATA de l'invite de commande MySQL.

1) Sauvegardez vos données Excel dans un fichier csv (Dans Excel 2007 en utilisant Enregistrer sous) Vérifiez le fichier enregistré à l'aide d'un éditeur de texte tel que le Bloc-notes pour voir ce qu'il ressemble réellement, à savoir ce que delimiter a été utilisé, etc.

2) LOAD DATA LOCAL INFILE 'C: \ temp \ votrefichier.csv' INTO TABLE base de données.table FIELDS TERMINÉ PAR ';' ENCLOS PAR '' 'LIGNES TERMINÉES PAR' \ r \ n '(field1, field2);

3) l'image du magasin d'avoir à utiliser TO_BASE64

Terminé!

Reference

Questions connexes