[RESOLU] Conversion CSV to XLS

Eléphanteau du PHP | 19 Messages

21 janv. 2015, 01:56

Bonjour,
Je voudrais savoir comment faire pour convertir un ensemble de fichiers CSV contenu dans un répertoire en xls. Si possible aussi de changer l'encodage.
Merci d'avance

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

21 janv. 2015, 09:47

Bonjour,

Pour changer l'encodage voici les fonctions utiles : utf8_encode(), utf8_decode(), iconv()

Pour transformer un csv en fichier Excel, il existe plusieurs dizaines de librairies.
En voici une : https://github.com/faisalman/simple-excel-php

Un point à avoir en tête, il est beaucoup plus simple de créer des fichiers .xlsx, c'est à dire compatible avec Excel > 2003 car c'est basé sur un format XML ouvert.
Tandis que les fichiers au format .xls sont dans un format propriétaire de Microsoft plus difficile à générer.
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 19 Messages

21 janv. 2015, 22:45

Bonsoir,
Merci j'ai réussi à le faire avec ce code
foreach ( $files as $file ) {
	$objReader = PHPExcel_IOFactory::createReader ( 'CSV' );
	
	// If the files uses a delimiter other than a comma (e.g. a tab), then tell the reader
	$objReader->setDelimiter ( ";" );
	// If the files uses an encoding other than UTF-8 or ASCII, then tell the reader
	$objReader->setInputEncoding ( 'UTF-8' );
	
	$objPHPExcel = $objReader->load ( $file );
	$objWriter = PHPExcel_IOFactory::createWriter ( $objPHPExcel, 'Excel5' );
	$objWriter->save ( dirname ( __FILE__ ) . '/archive/' . basename ( $file ) . '.ods' );
	echo 'file created';
}

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

22 janv. 2015, 14:05

Parfait.
Merci pour le partage de la solution :)
Quand tout le reste a échoué, lisez le mode d'emploi...