[résolu]Export vers Excel

Eléphant du PHP | 103 Messages

21 juil. 2011, 15:53

Bonjour voici un petit code qui permet d'exporter des données php vers une feuille excel.
header("Content-Type: application/vnd.ms-excel");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("content-disposition: attachment;filename=test.xls");
 
$text = "<table>";
$text .= "<tr><td>Contact</td></tr>";
$text .= "</table>";
echo $text;
Ce code marche très bien mais il ne crée qu'un seul onglet dans la feuille excel et j'aimerai en créer plusieurs. Savez-vous comment faire?

Merci
Modifié en dernier par Jibe le 15 sept. 2011, 12:32, modifié 1 fois.

Eléphant du PHP | 103 Messages

22 juil. 2011, 11:42

Je précise que quand je dis plusieurs onglets, c'est plusieurs feuilles excel. Comment faire (si possible) avec mon petit bout de code pour ouvrir un ficher excel avec plusieurs feuilles ?

Eléphant du PHP | 103 Messages

06 sept. 2011, 11:07

Bonjour,

J'ai juste une petite question concernant l'exportation de données PHP vers Excel. J'utilise PHPExcel et j'exporte des données de ma base mysql vers un fichier excel existant (avec plusieurs feuilles).

Cette ligne là :
$sheet = $excel->getSheet(0);
permet de faire une exportation sur la 1ère feuille.

Ma question : Existe t-il une commande qui permet de faire une exportation vers une feuille nommée?
J'ai essayé :
$sheet = $excel->getSheet("Input");
mais ça ne marche pas.
J'ai également essayé :
$name = "Input";
$sheet = $excel->getSheet($name);
ça ne marche pas non plus.

Si quelqu'un a une solution.

Merci

Mammouth du PHP | 568 Messages

06 sept. 2011, 14:20

Fonction setActiveSheetIndex

Eléphant du PHP | 103 Messages

06 sept. 2011, 14:51

Ca marche toujours pas.

J'ai donc mis :
$sheet2 = $excel->setActiveSheetIndex("Input_data2");
$sheet2->setCellValue("A1", "Date");
$sheet2->setCellValue("B1", "Competences");
$sheet2->setCellValue("C1", "Niveaux");
Mais les erreurs suivantes sont retournées :
Notice: Undefined index: Input_data2 in C:\wamp\www\Gest_comp\php\rapport\PHPExcel.php on line 186
Fatal error: Call to a member function setCellValue() on a non-object in C:\wamp\www\Gest_comp\php\rapport\rap_evol.php on line 51
La ligne 51 c'est $sheet2->setCellValue("B1", "Competences");

Pourtant il doit bien y avoir une fonction pour appeler une feuille par son nom et pas par son index

Mammouth du PHP | 568 Messages

06 sept. 2011, 15:37

SI je te donne le nom de la méthode, il serrait de bon ton d'aller voir quelle sont les paramètres possible, tu ne crois pas ? J'aurais commencer par là moi, mais bon...

Et en l’occurrence, c'est entier qui est attendu, et non pas une string...

Donc 0 pour la première, 1 pour la seconde, etc...

Eléphant du PHP | 103 Messages

06 sept. 2011, 15:46

J'ai réussi à le faire ça. J'arrive à exporter des données de ma base dans un fichier Excel existant. Le problème c'est que je connais que des méthodes qui permettent d'appeler une feuille excel par son index (donc un entier) or moi j'aimerai pouvoir appeler une feuille excel par son nom (donc un string). C'est une méthode qui accepte le nom d'une feuille excel en paramètre que je cherche.

Mammouth du PHP | 568 Messages

06 sept. 2011, 15:55

Et ça change quoi que ce soit un entier ou un nom de feuille ?

Tu ne connais pas l'architecture de ton fichier ? Ce n'est pas toi qui le génère ?

Dans ce dernier cas, tu a toujours la possibilité de vérifier l'existence d'une feuille, ce qui te renverra le bon index, que tu n'auras plus qu'a utiliser.

Eléphant du PHP | 103 Messages

06 sept. 2011, 16:43

Le fichier est un template donc je sais qu'il y aura au moins 3 feuilles quoi qu'il arrive. Mais ça peut changer (et là j'en saurai rien). C'est pour ça que j'aimerai travailler à partir des noms et pas des index.
Du coup, comment faut-il faire pour vérifier l'existence d'une feuille et récupérer l'index?

Mammouth du PHP | 568 Messages

06 sept. 2011, 16:57

Première chose, je te renvoie à la documentation où tu trouvera plein de choses intéressante => http://phpexcel.codeplex.com/releases/view/45412

Ensuite, il éxiste une méthode getSheetByName.

Cf. le code source de PHPExcel:
/**
	 * Get sheet by name
	 *
	 * @param string $pName Sheet name
	 * @return PHPExcel_Worksheet
	 * @throws Exception
	 */
	public function getSheetByName($pName = '')
	{
		$worksheetCount = count($this->_workSheetCollection);
		for ($i = 0; $i < $worksheetCount; ++$i) {
			if ($this->_workSheetCollection[$i]->getTitle() == $pName) {
				return $this->_workSheetCollection[$i];
			}
		}

		return null;
	}
EDIT: faut chercher un petit peu (j'ai mis à peine 5mn)

Eléphant du PHP | 103 Messages

06 sept. 2011, 17:26

Je te remercie d'avoir sacrifié 5 minutes de ton temps pour moi et d'avoir réglé le problème :) . Et merci pour le lien, je vais me documenter un peu :wink: .

Mammouth du PHP | 568 Messages

06 sept. 2011, 17:27

Je te remercie d'avoir sacrifié 5 minutes de ton temps pour moi et d'avoir réglé le problème :) . Et merci pour le lien, je vais me documenter un peu :wink: .
Merci de bien vouloir taguer le POST en résolut.