[RESOLU] Vers un Fichier excel

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Vers un Fichier excel

Re: Vers un Fichier excel

par xTG » 16 déc. 2013, 08:30

Comme je te l'ai écrit c'est toit qui voit à utiliser cette librairie ou utiliser un objet COM, c'est strictement la même chose.
Ensuite il est normal que tu ne trouves pas la base de données dans l'exemple puisque c'est un exemple statique.
C'est à toi d'y incorporer une sélection des données en provenance d'une bdd si besoin est.
Cet exemple ne fait que remplir un fichier excel avec des valeurs en dur.

La partie que tu as trouvé correspond bien à ce que tu cherches oui.

Re: Vers un Fichier excel

par acym » 15 déc. 2013, 20:07

Bonsoir xTG,
je viens de télécharger l'apli.
si j'ai bien compris ce sont ces lignes ou je dois implanter mon tableau.
remplacer les valeurs par des $_POST?
// Add some data
$objPHPExcel->setActiveSheetIndex(0)
            ->setCellValue('A1', 'Hello')
            ->setCellValue('B2', 'world!')
            ->setCellValue('C1', 'Hello')
            ->setCellValue('D2', 'world!');

le code en entier
<?php
/**
 * PHPExcel
 *
 * Copyright (C) 2006 - 2013 PHPExcel
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @category   PHPExcel
 * @package    PHPExcel
 * @copyright  Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel)
 * @license    http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt	LGPL
 * @version    1.7.9, 2013-06-02
 */

/** Error reporting */
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
date_default_timezone_set('Europe/London');

if (PHP_SAPI == 'cli')
	die('This example should only be run from a Web Browser');

/** Include PHPExcel */
require_once '../Classes/PHPExcel.php';


// Create new PHPExcel object
$objPHPExcel = new PHPExcel();

// Set document properties
$objPHPExcel->getProperties()->setCreator("Maarten Balliauw")
							 ->setLastModifiedBy("Maarten Balliauw")
							 ->setTitle("Office 2007 XLSX Test Document")
							 ->setSubject("Office 2007 XLSX Test Document")
							 ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
							 ->setKeywords("office 2007 openxml php")
							 ->setCategory("Test result file");


// Add some data
$objPHPExcel->setActiveSheetIndex(0)
            ->setCellValue('A1', 'Hello')
            ->setCellValue('B2', 'world!')
            ->setCellValue('C1', 'Hello')
            ->setCellValue('D2', 'world!');

// Miscellaneous glyphs, UTF-8
$objPHPExcel->setActiveSheetIndex(0)
            ->setCellValue('A4', 'Miscellaneous glyphs')
            ->setCellValue('A5', 'éàèùâêîôûëïüÿäöüç');

// Rename worksheet
$objPHPExcel->getActiveSheet()->setTitle('Simple');


// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0);


// Redirect output to a client’s web browser (Excel2007)
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="01simple.xlsx"');
header('Cache-Control: max-age=0');

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
exit;

et je ne sais dans quel fichier se trouve le code pour la connexion à la base de données.

Merci

Re: [RESOLU] Vers un Fichier excel

par xTG » 15 déc. 2013, 20:03

Je n'avais pas fait gaffe que tu instanciais un objet COM (cf ton premier post).
Du coup avec ce que tu fais actuellement tu fais rien de moins que ce que propose la librairie que je t'ai linké.
Elle s'appuie sur le même principe, elle ne fait que proposer une API plus sympa à manipuler.

Re: [RESOLU] Vers un Fichier excel

par acym » 15 déc. 2013, 19:16

bonjour xTG

pas pour les polices.

mais pour les colonnes et la première ligne

merci

Re: [RESOLU] Vers un Fichier excel

par xTG » 15 déc. 2013, 18:52

Quand tu parles de format c'est de mise en forme dont tu parles ? (couleur, police, tableau, ect)
Si c'est le cas en effet le format csv ne te permettra pas cela.
Tu as la librairie http://phpexcel.codeplex.com/ pour ce faire.

Re: Vers un Fichier excel

par acym » 15 déc. 2013, 15:11

Bonjour Xt+TG,
Ce qui est super, c'est que tu m'aide à me corriger sans me donner la solution.

Donc je dois passer par une librairie car il faut absolument que le fichier excel soit identique au format.

Merci

Re: Vers un Fichier excel

par xTG » 15 déc. 2013, 12:29

Ton nom de variable n'est pas correct, relis toi. ;)

Pourquoi CSV ? Parce que ce n'est pas l'extension qui fait le fichier mais son contenu.
Si tu veux générer du vrai xls il te faut une librairie.
Mais Excel sait lire le csv donc à moins que tu ne veuilles générer des graphiques et des formules tu n'en as pas l'utilité.

Re: Vers un Fichier excel

par acym » 15 déc. 2013, 12:12

Bonjour xTG,

j'ai mis $xls_output=' ';
avant le $i
mais toujours même erreur ligne 19 .
<?php
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: xlsx" . date("Y-m-d") . ".xlsx");
header( "Content-disposition: filename= test1.xlsx");
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ée grâce à data_export.php
 
$table = 'excel'; /* Remplacez par le nom de votre table à exporter ! */
$file = 'export';
$result = mysql_query("SHOW COLUMNS FROM ".$table."");
$xls_output='';
$i = 0;
if (mysql_num_rows($result) > 0)
{
while ($row = mysql_fetch_assoc($result))
{
/* erreur ligne 19*/     $xlsx_output .= $row['Field']."; ";   // erreur ligne 19
$i++;
}
}
 
$xlsx_output .= "\n";
 
$values = mysql_query("SELECT * FROM ".$table."");
while ($rowr = mysql_fetch_row($values))
{
for ($j=0;$j<$i;$j++)
{
$xlsx_output .= $rowr[$j]."; ";
}
$xlsx_output .= "\n";
}
 
$filename = $file."_".date("Y-m-d_H-i",time());
 
print $xlsx_output;
exit;
?>
Merci
et pourquoi il veut ouvrir en csv , puisque je lui dit en xlsx?

Merci

Re: Vers un Fichier excel

par xTG » 15 déc. 2013, 09:25

L'erreur est flagrante, la variable $xls_output n'existe pas. ;)

Tu tentes de concaténer un résultat à une variable qui n'est jamais créé, PHP arrive tout de même à le faire mais te prévient que la variable n'existe pas.
Initialises la variable $xls_output à une chaîne vide avant ta boucle.

Re: Vers un Fichier excel

par acym » 15 déc. 2013, 00:45

Bonsoir,
j'ai deux erreurs

l'une excel me dit que le fichier est différent que celui de l'extension spécifié
Capture.JPG
Puis cela l'ouvre en csv.
avec cette erreur
Capture1.JPG

Code : Tout sélectionner

( ! ) Notice: Undefined variable: xls_output in C:\wamp\www\Thea\Export\excel.php on line 18
Il faut qu'il s'ouvre en xls et non pas en csv.

voici les deux fichiers
data_export.php
<?php
/*
* fonction pour se connecter a la base de donnée
 
*@param $db(array) de config_export.php
 
*@return $link
*/
// On dis que la variable $db va prendre la valeur du tableau de $db ecris dans config.php
function database_connect($db) {
 $link=mysql_connect($db['host'],$db['user'],$db['pass'])or die ("connexion impossible : erreur ! ");
 mysql_select_db($db['base']);
 mysql_query('SET NAMES UTF8');
 return $link; // return va juste dire : true si ca a marché, ou ce qu'il y a marqué dans 'or die' si ca a foiré
 }
 
/**
 * fonction de deconnection de base de donnee
 * @param $link lien de base
 * @return rien
 */
function database_disconnect($link){
 mysql_close($link);
}
?>
excel.php
<?php
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: xls" . date("Y-m-d") . ".xls");
header( "Content-disposition: filename= test1.xls");
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ée grâce à data_fn.php
 
$table = 'excel'; /* Remplacez par le nom de votre table à exporter ! */
$file = 'export';
$result = mysql_query("SHOW COLUMNS FROM ".$table."");
$i = 0;
if (mysql_num_rows($result) > 0)
{
while ($row = mysql_fetch_assoc($result))
{
$xls_output .= $row['Field']."; ";
$i++;
}
}
 
$xls_output .= "\n";
 
$values = mysql_query("SELECT * FROM ".$table."");
while ($rowr = mysql_fetch_row($values))
{
for ($j=0;$j<$i;$j++)
{
$xls_output .= $rowr[$j]."; ";
}
$xls_output .= "\n";
}
 
$filename = $file."_".date("Y-m-d_H-i",time());
 
print $xls_output;
exit;
?>
Merci

Re: Vers un Fichier excel

par acym » 14 déc. 2013, 20:29

Bonsoir orenx22,

Désolé mais je ne peux tout savoir, je préfère passer par ce super forum.
comme cela j’apprends plus y compris pour les sites LoL.
Merci pour votre aide à tous

Re: Vers un Fichier excel

par orenx22 » 14 déc. 2013, 19:13

C'est quand même le site du manuel de php ><

bonne chance pour toi

Re: Vers un Fichier excel

par acym » 13 déc. 2013, 19:17

Bonsoir xTG,
je ne connaissais pas ce site php.

Merci très sincèrement

Re: Vers un Fichier excel

par xTG » 13 déc. 2013, 19:09

La documentation de PHP sur la fonction header.
http://php.net/header

Re: Vers un Fichier excel

par acym » 13 déc. 2013, 17:09

Bonjour MOOGLI,
Salut,

Ce script ne peu fonctionner que sur ton ordi vu le nom de fichier et l'utilisation de la lib com.

Ensuite il faut que tu utilise la fonction header pour envoyer le fichier au navigateur. (Exemple dans la doc, c'est pdf mais le principe est la).

Ensuite c'est assez simple si ce script est la cible du formulaire (action) qui contient le bouton le tour est joué ;)

@+

de quelle doc tu parles
Merci