|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||||
|
Membre du Club
![]() Inscription : janvier 2007 Messages : 238 ![]() |
Bonjour à tous,
Je cherche à améliorer une class php d’export de mysql vers excel. Jusqu’à présent j’utilisais la class ci-dessous pour exporter le résultat de requête mysql vers excel sans problème. Migrant toute ma base de données en UTF-8 afin de gérer le chinois et le russe notamment, je n’arrive pas à exporter mes données correctement. Les caractères « exotiques » ne passent pas sous Excel. Voici le code : Dans la page php qui sert de déclencheur : Code :
Code :
Code :
Code :
A partir du code initial, j'ai essayé de nombreuses modifications sans succès à savoir : 1) encoder tous les fichier en UTF-8 2) rajouter pour les requêtes sql de mysql_query("SET NAMES utf8"); 3) modifier le header ( "Content-type: application/octet-stream; name=$this->excel_filename.xls" ); en précisant que c'était de l'utf8, que c'était du excel, etc... Dans tous les cas, j'arrive à exporter vers excel, mais les catactères chinois ou russe voire les caractères accentués ne passe jamais correctement selon les modifications. J'ai l'impression qu'excel s'attend à recevoir des data en iso classique en non pas en UTF-8. Qui peut m'aider s'il vous plait ? Par avance merci. Tavar Pour info : les datas sont enregistrées en caractères chinois, russe, ou autre (français !, anglais, ..) dans la base.
__________________
Mieux vaut penser avant d'agir que d'agir en rêvant. |
||||||||
|
|
00
|
|
|
#2 | ||
|
Membre du Club
![]() Inscription : janvier 2007 Messages : 238 ![]() |
Bonjour,
Après avoir passé des jours et des jours à chercher et tester, je n'ai malheureusement trouver aucune solution à ce besoin pourtant simple : exporter le résultat d'une requête (mysql utf-8) vers excel. J'ai testé PHPExcel, sans succès. Avec PHPExcel, je suis limité par l'exportation de petits fichiers. J'ai besoin d'exporter un résultat de 60000 lignes environ et de 20 colonnes. Je n'ai pas accès à PEAR. Bref, je suis preneur de toute solution. Avec PHPExcel : voici où j'en suis (ce code fonctionne pour de petites extractions) Code :
__________________
Mieux vaut penser avant d'agir que d'agir en rêvant. |
||
|
|
00
|
|
|
#3 | ||
|
Membre expérimenté
![]() ![]() Inscription : août 2008 Messages : 510 ![]() |
Bonjour,
Je pense que PHPExcel code en iso effectivement, donc pour le traitement des accents faut utiliser quelquechose qui ressemble a ceci : Code :
__________________
If you type Google into Google, you Can break the internet" - The IT Crowd |
||
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() Inscription : janvier 2007 Messages : 238 ![]() |
Tout d'abord, merci à vous buggen25 pour votre réponse. Je me sens moins seul !
Le problème (à priori) n'est pas que PHPExcel http://www.phpexcel.net code ou non en iso, c'est qu'on se retrouve vite avec de problèmes de mémoire côté serveur. J'arrive parfaitement à exporter du chinois, russe et autres langues. Il y a plein de post à ce sujet sur le site consacrée à cette class. Malheureusement (pour moi) c'est tout en anglais et cela dépasse mes compétences techniques. A priori, beaucoup de personnes ont rencontré le même problème que moi. Après que je code mal et que je n’optimise pas l'usage ce cette class, c'est certainement possible. Là où je suis désespéré, c'est qu'avec mon premier exemple http://www.phpclasses.org/package/64...to-Excel-.html, j'arrive à exporter n'importe quoi, pas de limitation au niveau de la taille de la requête, mais cette class ne gère pas l'utf-8. PHPExcel gère l'utf-8 mais ne permet pas d'exporter n'importe quelle requête (taille)
__________________
Mieux vaut penser avant d'agir que d'agir en rêvant. |
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() Inscription : janvier 2007 Messages : 238 ![]() |
Up !
Avant de capituler, je pose une dernière fois la question à la communauté française : Comment faites vous pour exporter vers excel un requête impliquant une base en utf-8 et un résultat conséquent (60000 lignes au moins). Je n'ai rien trouvé à ce jour sur la toile ... Il doit bien avoir une solution. Par avance mille merci à celui ou ceux qui pourront m'aider.
__________________
Mieux vaut penser avant d'agir que d'agir en rêvant. |
|
|
00
|
|
|
#6 | ||
|
Membre actif
![]() Glen RhodesÉtudiant Inscription : novembre 2009 Messages : 134 ![]() |
Bonjour,
Je n'ai pas eu ce problème personnellement car j'utilises PHPExcel avec des petits fichiers (moins de 1000 lignes), mais de ce que j'ai pu lire dans les formus le problème avec PHPExcel est le dépassement mémoire. Ce lien donne de bonnes infos sur la consommation mémoire : http://phpexcel.codeplex.com/discuss...tName=phpexcel Donc il existe quatres solutions: - augmenter la limite mémoire de php (dans le php.ini sachant qu'elle est à 128 MB de base je crois et que ils ont l'air d'être dépassés pour 80000 cellules) -il est possible de réduire l'utilisation de la mémoire en utilisant un principe de cache Code :
-la méthode qui permet de traiter n'importe quelle taille de fichier mais qui prend un temps considérable, tout est expliqué ici : http://phpexcel.codeplex.com/discuss...tName=phpexcel |
||
|
|
00
|
|
|
#7 | ||||||||
|
Membre du Club
![]() Inscription : janvier 2007 Messages : 238 ![]() |
Bonjour glen1789,
Tout d'abord merci pour votre réponse. Je ne réponds qu'aujourd'hui, mais il arrive parfois de rencontrer d'autres préoccupations plus graves que des lignes de codes à gérer ... Bref, J'ai testé votre code. En réduisant la taille des requêtes, cela améliore les choses, néanmoins impossible d'exporter de gros fichiers. Après avoir cherché et cherché, j'ai trouvé une issue satisfaisante en partant de cette solution http://www.phpclasses.org/package/20...cel-files.html. Il n'y a qu'à lire le forum associé à cette class, pour comprendre qu'il y a un problème. Néanmoins en cherchant un peu et en modifiant le code, j'ai réussi à obtenir une solution qui me permet d'exporter une requête SQL à partir d'une base en UTF-8. Je n'ai à ce jour pas rencontré de problème de taille de fichier. Il faut juste penser à donner les droits en écriture. Voici donc le code pour ceux qui sont confronté au même soucis : fichier basique de test : Code :
Code :
Code :
Code :
Pour info, je n'ai pas eu de réponse satisfaisante sur le forum de PHPExcel. En espérant que ces lignes serviront à d'autres et en vous remerciant aussi pour vos posts qui m'ont aidé, Bien à vous tous, Tavarlindar
__________________
Mieux vaut penser avant d'agir que d'agir en rêvant. |
||||||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com