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-boun...@lists.typo3.org 
[mailto:typo3-german-boun...@lists.typo3.org] Im Auftrag von Renzo Bauen
Gesendet: Freitag, 5. Juni 2015 22:15
An: typo3-german@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@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

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

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

Antwort per Email an