Page 1 sur 1

Message Excel depuis PHP

Posté : 24 déc. 2013, 22:41
par acym
Bonjour,

Mon fichier excel fonctionne bien.
Mais quand il se lance un message apparaît.
' Format de fichier'

Comment faire pour ne plus l'avoir à l'ouverture.
<?php
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: csv" . date("Y-m-d") . ".csv");
header( "Content-disposition: filename= base_pg");
include('config_export.php');// gere les login et pass de la BDD
include ('data_export.php');

$link=database_connect($db); // on se connecte à la base de donn&eacute;e gr&acirc;ce à data_export.php
 
$table = 'excel'; /* Remplacez par le nom de votre table à exporter ! */
$file = 'export';
$result = mysql_query("SHOW COLUMNS FROM ".$table."");
$xlsx_output='';
?>
<table width='100%'>
	<tr>
	<td><b>nom_dossier</b></td>
	
	<td><b>type_societe</b></td>
	
	<td><b>collaborateur</b></td>
	
	<td><b>date_cloture</b></td>
	
	<td><b>type_mission</b></td>
	
	<td><b>t&acirc;che</b></td>
	
	<td><b>p&eacute;riodicit&eacute;</b></td>
	
	<td><b>date_&eacute;ch&eacute;ance</b></td>
	
	<td><b>quantit&eacute;</b></td>
	
	<td><b>avancement</b></td>
	
	<td><b>commentaire</b></td>
	</tr>
<?php



$req = "select *  FROM excel WHERE collaborateur='PG'";
$result_set=mysql_query($req);
while($dnn = mysql_fetch_array($result_set))
{
?>
	<tr>
    	<td class="left"><?php echo htmlentities($dnn['nom_dossier'], ENT_QUOTES, 'UTF-8'); ?></td>
	
    	<td class="left"><?php echo htmlentities($dnn['type_societe'], ENT_QUOTES, 'UTF-8'); ?></td>
	
    	<td class="left"><?php echo htmlentities($dnn['collaborateur'], ENT_QUOTES, 'UTF-8'); ?></td>
	
    	<td class="left"><?php echo htmlentities($dnn['date_cloture'], ENT_QUOTES, 'UTF-8'); ?></td>
	
    	<td class="left"><?php echo htmlentities($dnn['type_mission'], ENT_QUOTES, 'UTF-8'); ?></td>
	
    	<td class="left"><?php echo htmlentities($dnn['tache'], ENT_QUOTES, 'UTF-8'); ?></td>
	
    	<td class="left"><?php echo htmlentities($dnn['periodicite'], ENT_QUOTES, 'UTF-8'); ?></td>
	
    	<td class="left"><?php echo htmlentities($dnn['date_echeance'], ENT_QUOTES, 'UTF-8'); ?></td>
	
    	<td class="left"><?php echo htmlentities($dnn['quantite'], ENT_QUOTES, 'UTF-8'); ?></td>
	
    	<td class="left"><?php echo htmlentities($dnn['avancement'], ENT_QUOTES, 'UTF-8'); ?></td>
	
    	<td class="left"><?php echo htmlentities($dnn['commentaire'], ENT_QUOTES, 'UTF-8'); ?></td>
    </tr>
<?php
}
 
$filename = $file."_".date("Y-m-d_H-i",time());
 
print $xlsx_output;
exit;

?>
Merci

Re: Message Excel depuis PHP

Posté : 25 déc. 2013, 10:20
par ikkiphenix
Bonjour,

Dans un certaine mesure, c'est plus un problème client qu'un problème PHP. Ta configuration client (Windows / Office) s'inquiète du fichier déclaré comme un fichier Excel, alors que sa structure est lisible certes, mais ne correspond pas à la structure Excel attendue.

Pour éviter le message, il faudrait écrire ton Excel en XML Excel en utilisant les balises adaptées. Dans l'idée du HTML, ça reste un langage XML, avec des balises, mais il faut avoir les bonne balises.

Soit tu le fais "à la main" : tu peux enregistrer un Excel en XML (2007 je crois le fait par défaut) Spreadsheet puis ouvrir le fichier enregistré dans un Notepad, ça te donnera une idée du balisage. Soit tu utilises un libraire type PHPExcel de Codeplex (http://phpexcel.codeplex.com/) qui permet de créer et de manipuler un fichier Excel depuis PHP.

Il y a encore le fichier CSV... rustique mais efficace et simple à mettre en place.

Re: Message Excel depuis PHP

Posté : 26 déc. 2013, 16:17
par niuxe
Bonjour,

Dans un certaine mesure, c'est plus un problème client qu'un problème PHP. Ta configuration client (Windows / Office) s'inquiète du fichier déclaré comme un fichier Excel, alors que sa structure est lisible certes, mais ne correspond pas à la structure Excel attendue.

Pour éviter le message, il faudrait écrire ton Excel en XML Excel en utilisant les balises adaptées. Dans l'idée du HTML, ça reste un langage XML, avec des balises, mais il faut avoir les bonne balises.

Soit tu le fais "à la main" : tu peux enregistrer un Excel en XML (2007 je crois le fait par défaut) Spreadsheet puis ouvrir le fichier enregistré dans un Notepad, ça te donnera une idée du balisage. Soit tu utilises un libraire type PHPExcel de Codeplex (http://phpexcel.codeplex.com/) qui permet de créer et de manipuler un fichier Excel depuis PHP.

Il y a encore le fichier CSV... rustique mais efficace et simple à mettre en place.
+1 pour le CSV.

.

Le CSV va être beaucoup plus simple et rapide à mettre en place. Le csv n'est qu'un fichier texte avec des données séparées par une virgule ou un point virgule. Le CSV est format compatible avec tous les tableurs.

PHPExcel : Je ne connais pas cette librairie. Cependant, avec php tout seul, on peut créer/éditer/supprimer des données d'un fichier Excel/Word/Open Office Writer/Calc/etc. En effet, avec la classe com, on peut même faire du visual basic dans un fichier µ$oft.

Re: Message Excel depuis PHP

Posté : 27 déc. 2013, 13:05
par ikkiphenix
Cependant, avec php tout seul, on peut créer/éditer/supprimer des données d'un fichier Excel/Word/Open Office Writer/Calc/etc. En effet, avec la classe com, on peut même faire du visual basic dans un fichier µ$oft.
Si ça tourne sur Windows, oui.