Enregistrement fichier Excel avec PHPExcel
Bonjour,
Sous Symfony2.0.17 avec PHpExcel 1.7.7, LiugioExcelBundle et le n3b.
Pas moyen d'écrire dans un fichier Excel. J'arrive à lire, boucler, afficher mes tableaux dans ma page Web.
Voilà mon code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| public function lireFeuilleAction($feuillA = 0, $feuillB = 0)
{
$em1 = $this->container->get('doctrine')->getEntityManager();
$fichA = "C:\Documents and Settings\bzn\Bureau\PHPExcel-Tests\FichierA.xls";
$fichB = "C:\Documents and Settings\bzn\Bureau\PHPExcel-Tests\FichierB.xls";
// créer objet reader
$xls_service = $this->container->get('xls.load_xls5');
//Créer l'objet qui va charger le classeur définit dans le load
$exelObj_A = $xls_service->load($fichA);
$exelObj_B = $xls_service->load($fichB);
//Récupération des dernières lignes et colonnes du classeur A
$objWorksheet_A = $exelObj_A->getActiveSheet();
$highestRow_A = $objWorksheet_A ->getHighestRow();
$highestColumn_A = $objWorksheet_A ->getHighestColumn();
//Récupération des dernières lignes et colonnes du classeur B
$objWorksheet_B = $exelObj_B->getActiveSheet();
$highestRow_B = $objWorksheet_B ->getHighestRow();
$highestColumn_B = $objWorksheet_B ->getHighestColumn();
//Récupération de la première feuille des fichier Excel
//Lecture classeur "FichierB.xls" et A
$sheet_A = $exelObj_A->getSheet($feuillA);
$sheet_B = $exelObj_B->getSheet($feuillB);
$colA = 1;
$colB = 1;
$compt = 0;
for ($rowA = 1; $rowA <= $highestRow_A; ++$rowA)
{
$valA = $objWorksheet_A->getCellByColumnAndRow($colA, $rowA)->getValue();
for ($rowB = 1; $rowB <= $highestRow_B; ++$rowB)
{
$valB = $objWorksheet_B->getCellByColumnAndRow($colB, $rowB)->getValue();
if($valA = $valB)
{
// Définition de la feuille active
$compt = $compt + 1;
$exelObj_B->setActiveSheetIndex($feuillB);
$exelObj_B->getActiveSheet()->setCellValueByColumnAndRow(1, $rowB, $valA);
}
}
} |
ici le reste pour envoyer ma page
Comme l'écriture ne se faisait pas, j'ai essayé d'écire directement en dehors de ma boucle:
Code:
1 2 3 4
| //Test d'écriture dans le fichier
$exelObj_B->setActiveSheetIndex(0);
$exelObj_B->getActiveSheet()->setCellValueByColumnAndRow(2, 2, "Coucou!");
$exelObj_B->getActiveSheet()->setCellValue('A1', 'Fichier de test'); |
Si quelqu'un avait une idée. Merci d'avance
@ +++
Kris