Question

Je suis jouer avec un PHP - l'intégration MS Excel ces jours-ci. Ma tâche est d'ouvrir une feuille de calcul existante, ajouter des données et enregistrer le rempli tableur comme un nouveau fichier. En fait une sorte de moteur de remplissage de modèle, eventhough fichiers XLSX sont utilisés comme modèles.

J'ai regardé dans PHPExcel qui semble être cadre assez agréable. En ordre de mettre en œuvre une preuve de concept que je ne les éléments suivants (réduit au minimum nécessaires pour illustrer ce que je dois faire):

$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objReader->setReadDataOnly(true);  
$objPHPExcel = $objReader->load("myTemplateToFill.xlsx");

    //Here comes the actual filling
$objWorksheet = $objPHPExcel->createSheet();
$objWorksheet->setTitle('Apple')    ;
$objWorksheet->setCellValue('A1', 'Banana');    
$objPHPExcel->setActiveSheetIndex(0);

$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter->save('myFilledTemplate.xlsx');

L'exécution de ce que je trouve créé un nouveau fichier, mon Daat est inséré, mais malheureusement avec tous la mise en forme existante est perdue.

La question est, est-il un moyen de faire PHPExcel garder ces formattigs dans la nouvelle fichier? Ou aller encore plus loin: est-il possible de conserver des graphiques, etc. dans un fichier modèle et remplissez la façon dont je les ai essayé?

Merci d'avance pour votre expérience partagée!

K

Était-ce utile?

La solution

Hum, vous créez une nouvelle feuille de calcul, Wich n'a pas le format par défaut. Je pense que vous devez ajouter vos valeurs à la feuille existante?

$objPHPExcel->setActiveSheetIndex(0); // index of sheet
$workSheet = $objPHPExcel->getActiveSheet();
$workSheet->setTitle('Pflaume');

Autres conseils

Le formatage est perdu à cause de cette ligne $ ObjReader-> setReadDataOnly (true); qui indique au lecteur à lire uniquement les données de votre classeur de modèle, pas le formatage.

Vous devez également modifier les données dans les feuilles de calcul existantes. Création d'une nouvelle feuille de calcul va créer une feuille non formatée. Vous pouvez également utiliser la méthode copie PHPExcel_WorkSheet ()

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top