2017-07-07 1 views
0

J'utilise phpoffice/phpexcel et j'ai un problème.PHP Excel enregistrer une seule feuille en pdf

  1. J'ai un fichier Excel avec 9 feuilles
  2. J'ouvre 6 de ces 9 feuilles (objReader- $> setLoadSheetsOnly ([...])) ne définissez certaines valeurs et calculer
  3. Je sauve ce nouveau fichier Excel avec 6 feuilles

Infos: l'un des 6 steets est un site qui ont aperçu quelques références aux autres feuilles

Je il une méthode pour enregistrer uniquement la feuille aperçu en PDF?

Mes lignes:

require_once dirname(__FILE__) . '/PHPExcel/IOFactory.php'; 

if (!file_exists("orginal.xls")) { 
    exit("Please create orginal.xls first." . EOL); 
} 

PHPExcel_Settings::setCacheStorageMethod(PHPExcel_CachedObjectStorageFactory::cache_in_memory); 

echo date('H:i:s') , " Load from Excel2007 file" , EOL; 

$objReader = PHPExcel_IOFactory::createReader('Excel5'); 

$objReader->setLoadSheetsOnly(array("Dateneingabe", "Leistungen EK", "Flugliste", "Sprachen", "Buchungsübersicht", "Verkaufspreise", "Offerte", "Transferdauer")); 

$objPHPExcel = $objReader->load("orginal.xls"); 

$objPHPExcel->setActiveSheetIndexByName('Dateneingabe'); 
$objPHPExcel->getActiveSheet()->SetCellValue('D102', '220'); 
$objPHPExcel->getActiveSheet()->SetCellValue('F102', '220'); 

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); 
//$objWriter->setPreCalculateFormulas(false); 
$objWriter->setOffice2003Compatibility(true); 
$objWriter->save(str_replace('.php', '.xls', __FILE__)); 

//SAVE AS PDF 

$objReader = PHPExcel_IOFactory::createReader('Excel2007'); 

$objReader->setReadDataOnly(true); 

$objReader->setLoadSheetsOnly(array("Dateneingabe", "Leistungen EK", "Flugliste", "Sprachen", "Buchungsübersicht", "Verkaufspreise", "Offerte", "Transferdauer")); 

$objPHPExcel = $objReader->load("index.xls"); 

$objPHPExcel->setActiveSheetIndexByName('Offerte'); 

$rendererName = PHPExcel_Settings::PDF_RENDERER_DOMPDF; 

$rendererLibrary = dirname(__FILE__).'/dompdf/dompdf/'; 

PHPExcel_Settings::setPdfRenderer($rendererName, $rendererLibrary); 

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF'); 

$objWriter->setPreCalculateFormulas(false); 

$objWriter->save(str_replace('.php', '.pdf', __FILE__)); 
+0

Vous devez essayer ** d'écrire le code vous-même **. Après [** faire plus de recherche **] (https://meta.stackoverflow.com/q/261592/1011527) si vous avez un problème ** poster ce que vous avez essayé ** avec ** une explication claire de ce que ne fonctionne pas ** et fournit [un exemple minimal, complet et vérifiable] (http://stackoverflow.com/help/mcve). Lisez [Comment demander] (http://stackoverflow.com/help/how-to-ask) une bonne question. Assurez-vous de [faire le tour] (http://stackoverflow.com/tour) et lisez [this] (https://meta.stackoverflow.com/q/347937/1011527). –

+0

Comme mes lignes, je peux seulement enregistrer le fichier Excel complet avec tous les steets. – Niklas

+0

Si je ne charge que la feuille de présentation "Offerte", les références se sont perdues – Niklas

Répondre

0

Par défaut, les auteurs HTML et PDF (le PDF Writer utilise la sortie de la Writer HTML qu'il convertit en PDF en utilisant l'une des bibliothèques PDF Writer pris en charge) ne peut créer un sortie de feuille simple. Cependant, ces auteurs vous permettent de sélectionner la feuille à écrire en utilisant la méthode setSheetIndex(), de sorte que vous puissiez écrire des fichiers pour chaque feuille de travail à tour de rôle, puis les «assembler» en utilisant l'un des outils d'assemblage PDF existe ... ou il existe également une méthode writeAllSheets().

0

utiliser l'outil MPDF comme ci-dessous le code

utiliser l'outil MPDF pour convertir vos données en formate pdf.