[TYPO3-german] Anwendung der Ext:phpexcel_service

Johannes C. Laxander jc at laxander.com
Sat Jun 6 16:56:29 CEST 2015


Hi Andrea,

super und vielen Dank für's Zusammenkopieren! Damit kann ich mal was anfangen :)

Gruß, Joahnnes.

-----Ursprüngliche Nachricht-----
Von: typo3-german-bounces at lists.typo3.org [mailto:typo3-german-bounces at lists.typo3.org] Im Auftrag von Andrea Schmuttermair
Gesendet: Samstag, 6. Juni 2015 15:26
An: German TYPO3 Userlist
Betreff: Re: [TYPO3-german] Anwendung der Ext:phpexcel_service

Hi,

ich denke das Extension Manual hat einen Tippfehler bei 3::makeInstanceService, das sollte heißen:
$phpExcelService = t3lib_div::makeInstanceService('phpexcel');

Hier ist etwas Beispielcode - habe ich gerade aus ner größeren Extension zusammenkopiert, ist also ungetestet:

     $phpExcelService = t3lib_div::makeInstanceService('phpexcel');
     $objPHPExcel = $phpExcelService->getPHPExcel();

     $results = array();
     //todo: load your data here into the array

     //Write Datarows
     $rowindex = 1;
     foreach ($results as $datarow) {
       $colindex = 0;
       foreach ($datarow as $key=>$value)
       {
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($colindex,$rowindex,$value);
          $colindex++;
       }
       $rowindex++;
     }

     //Set Width to Auto
     $maxcol = $colindex-1;
     for ($i=0;$i<=$maxcol;$i++)
     {
$objPHPExcel->getActiveSheet()->getColumnDimension(PHPExcel_Cell::stringFromColumnIndex($i))->setAutoSize(true);
     }

     // Rename sheet
     $objPHPExcel->getActiveSheet()->setTitle($title);

     //create download file
     header('Content-Type: application/vnd.ms-excel');
     header('Content-Disposition: 
attachment;filename="/path/to/file/filename.xls"');
     header('Cache-Control: max-age=0');

     //writer to write Excel File - check doku for other writers, this one is the ".xls" format"
     $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
     $objWriter->save('php://output');

     //mit Exit wird das Rendering der Extbase Action abgebrochen und das Excel File an Output geschickt
     exit;

LG Andrea


Am 06.06.2015 um 11:28 schrieb Johannes C. Laxander:
> Lieber Renzo,
>
> schön, mal wieder von dir zu lesen! Danke für deine Erklärung.
>
> Da ich nicht nur Excel-Dateien auf der Website darstellen möchte, sondern Daten in eine Excel-Tabelle exportieren muss, muss ich in meiner Extension also Code schreiben. Mein Problem ist im Moment noch, was die Besonderheit eines "Service for TYPO3" ist. In der Doku http://docs.typo3.org/typo3cms/extensions/phpexcel_service/  steht:
>
> "It is very easy to integrate PHPExcel to your projects. The extension provides a service for TYPO3, which helps you to instanciate the PHPExcel library."
>
> Und als Beispiel ist angegeben:
>
> /* @var $phpExcelService/ $phpExcelService = 
> 3::makeInstanceService('phpexcel'); $phpExcel = 
> $phpExcelService->getPHPExcel();
>
> Ich hab das im Controller jetzt mal so umgesetzt:
>
> /**
>   * action export cruises to excel sheet
>   *
>   * @var $phpExcelService/
>   * @return void
>   */
> public function exportExcelAction() {
>
> /* Create new PHPExcel object  */
> $phpExcelService = 3::makeInstanceService('phpexcel');
> $objPHPExcel = $phpExcelService->getPHPExcel();
>
> Ich konnte es so aber noch nicht testen, weil ich Moment an einem anderen Fehler hängen bleibe: "The action "exportExcel" (controller "Cruise") is not allowed by this plugin". In der ext_localconf.php steht drin:
>
> \TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
> 	'VENDOR' . $_EXTKEY,
> 	'MyExtension',
> 	array(
> 		'Controller' => 'list,searchForm,searchResult,exportExcel',
> 	),
> 	// non-cacheable actions
> 	array(
> 		'Controller' => '',
> 	)
> );
>
> Wo also liegt der Fehler? Da komme ich auch ohne Sommerhitze schon 
> ganz schön ins Schwitzen ;)
>
> Gruß, Johannes.
>
> -----Ursprüngliche Nachricht-----
> Von: typo3-german-bounces at lists.typo3.org 
> [mailto:typo3-german-bounces at lists.typo3.org] Im Auftrag von Renzo 
> Bauen
> Gesendet: Freitag, 5. Juni 2015 22:15
> An: typo3-german at lists.typo3.org
> Betreff: Re: [TYPO3-german] Anwendung der Ext:phpexcel_service
>
> Lieber Johannes
>
> PHPExcel ist eine PHP Bibliothek, die dazu dient, Excel-Dateien zu erstellen, zu lesen und zu bearbeiten.
> D.h. wenn Du eine Excel-Datei erstellen willst, dann braucht es sowas 
> wie hier
> (https://phpexcel.codeplex.com/wikipage?title=Examples&referringTitle=Requirements) auf der Webiste des PHPExcel-Projektes dargestellt.
> So wie es aussieht, kommst Du da nicht um eigenen PHP-Code herum. Mit den Beispielen auf der erwähnten Projektseite sollte das aber eigentlich kein Problem sein.
> Wenn Du lediglich Excel-Dateien auf deiner Website darstellen willst, ist das aber glaube ich mit Kanonen auf Spatzen geschossen. Da gibt es z.B. die Ext cag_tables, die sowas ohne viel Programmierung kann.
>
> Liebe Grüsse und ein schönes Wochenende Renzo
>
> --
> conPassione gmbh
> CH-3661 Uetendorf
> +41 33 345 00 92
>
> Am Donnerstag, den 04.06.2015, 11:20 +0200 schrieb Johannes C. Laxander:
>
>> Hallo,
>>
>>   
>>
>> die Extension installiert die Library PHPExcel und macht sie für 
>> TYPO3 verfügbar. Soweit bin ich dabei. Meine PHP Kenntnisse und 
>> Erfahrungen sind aber eher bescheiden, und deshalb hakt es im Moment noch bei der Anwendung.
>> In der knappen Doku steht folgendes drin:
>>
>>   
>>
>> ---
>>
>> Example: ``` /* @var $phpExcelService/ $phpExcelService = 
>> 3::makeInstanceService('phpexcel'); $phpExcel = 
>> $phpExcelService->getPHPExcel();
>>
>>   
>>
>> // Your excel magic goes here...
>>
>>   
>>
>> /** @var \PHPExcel_Writer_Excel2007 $excelWriter */
>>
>> $excelWriter = 
>> $phpExcelService->getInstanceOf('PHPExcel_Writer_Excel2007',
>> $phpExcel);
>>
>> $excelWriter->save('...');
>>
>> ---
>>
>>   
>>
>> Wie muss ich die Library in mein Extbase Script einbinden, damit ich 
>> sie nutzen kann?
>>
>>   
>>
>> <?php
>>
>> namespace VENDOR\MyExtension\Controller;
>>
>>   
>>
>> class CruiseController extends
>> \TYPO3\CMS\Extbase\Mvc\Controller\ActionController {
>>
>> ...
>>
>> /*
>>
>> * Daten einlesen die in einem Excel Sheet ausgegeben werden sollen...
>>
>> */
>>
>> ...
>>
>> /*
>>
>> * Excel Sheet generieren
>>
>> */
>>
>> ...???
>>
>> }
>>
>> ?>
>>
>>   
>>
>> Wer kann mir hierbei bitte weiterhelfen?
>>
>> Johannes.
>>
>> _______________________________________________
>> TYPO3-german mailing list
>> TYPO3-german at lists.typo3.org
>> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
> _______________________________________________
> TYPO3-german mailing list
> TYPO3-german at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
>
> _______________________________________________
> TYPO3-german mailing list
> TYPO3-german at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

_______________________________________________
TYPO3-german mailing list
TYPO3-german at lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german



More information about the TYPO3-german mailing list