Ankündigung

Einklappen
Keine Ankündigung bisher.

PHPExcel Chart erstellen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHPExcel Chart erstellen

    Guten Morgen zusammen,
    Ich habe bisher versucht ein Chart mit der PHPExcel Bibliothek zu erstellen.
    Der Code ist bereits lauffähig und macht auch das was ich mir vorstelle.
    Nun kamen aber neue Anforderungen für dieses Chart. Es soll auf eine neue Seite beschrieben werden, sodass dieses Chart die gesamte Seite einnimmt und man keine Zellen dort sieht.
    Der Code sieht momentan so aus:
    PHP-Code:
    $categories = array(
             new 
    PHPExcel_Chart_DataSeriesValues('String''Fahrzeugstatistik!$A$2:$A$'.$inull4),
       );
       
    $values = array(
             new 
    PHPExcel_Chart_DataSeriesValues('Number''Fahrzeugstatistik!$C$2:$C$'.$inull4),
             new 
    PHPExcel_Chart_DataSeriesValues('Number''Fahrzeugstatistik!$D$2:$D$'.$inull4),
             new 
    PHPExcel_Chart_DataSeriesValues('Number''Fahrzeugstatistik!$E$2:$E$'.$inull4),
       );
       
    $series = new PHPExcel_Chart_DataSeries(
             
    PHPExcel_Chart_DataSeries::TYPE_BARCHART,       // plotType
             
    PHPExcel_Chart_DataSeries::GROUPING_CLUSTERED,  // plotGrouping
             
    array(0,1,2),                                    // plotOrder
             
    $labels,                                        // plotLabel
             
    $categories,                                    // plotCategory
             
    $values                                         // plotValues
       
    );
       
    $series->setPlotDirection(PHPExcel_Chart_DataSeries::DIRECTION_COL);
       
    $plotarea = new PHPExcel_Chart_PlotArea(null, array($series));
       
    $legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHTnullfalse);
       
    $chart = new PHPExcel_Chart(
             
    'chart1',                                       // name
             
    null,                                           // title
             
    $legend,                                        // legend
             
    $plotarea,                                      // plotArea
             
    true,                                           // plotVisibleOnly
             
    0,                                              // displayBlanksAs
             
    null,                                           // xAxisLabel
             
    null                                            // yAxisLabel
       
    );
       
    $objPHPExcel->createSheet(1);
       
    $objPHPExcel->setActiveSheetIndex(1)->addChart($chart);
       
    $chart->getBottomRightCell();
       
    $chart->getTopLeftCell();
       
    $objWriter PHPExcel_IOFactory::createWriter($objPHPExcel'Excel2007');
       
    $objWriter->setIncludeCharts(TRUE);
       
    $objWriter->save('ExcelDateien/Details.xlsx');
    echo 
    BootstrapGUI::alrt("Die Excel Datei wurde erfolgreich erstellt!","success",BootstrapGUI::GLY_EXCLAMATION,"Success"); 
    Die Frage ist jetzt nur wie ich dieses Chart nicht auf eine andere Seite in die Zellen schreibe also mit Zellengröße, sondern wie dieser Graph wirklich die gesamte Seite direkt einnehmen kann.

  • #2
    Zitat von ShadowCastiel Beitrag anzeigen
    Es soll auf eine neue Seite beschrieben werden, sodass dieses Chart die gesamte Seite einnimmt und man keine Zellen dort sieht.
    Wenn ich das richtig beurteile ist das was Du machen willst nicht möglich.

    Prinzipiel kennt ein Excel Dokument keine echten Seiten deren genaue Größe bereits beim Erstellen bekannt wäre.

    Die Größe der Druckseite (ich nehme an das Du das mit "Seite" meinst) wird ja vom zu verwendenden Drucker, mit dessen Randeinstellungen und Papiergröße definiert. Woher willst Du diese benötigten Informationen vom Nutzer denn nehmen? Genau das kannst Du nicht! Edit: Man kann zwar einen Seitenumbruch im Dokument festlegen, aber das bedeutet ja nicht das man weis, ob der nicht bereits zu spät ist und die Druckseite schon vorher endet.

    Was Du eigentlich suchst ist ein PDF Dokument mit dem CHart drin. Dort kannst Du das bereits vor dem Drucken festlegen.

    Gruß, Ulf
    PHP-Manual ¡ mysql_* ist veraltet ¡ Debugging: Finde DEINE Fehler selbst ¡ Passwort-Hashing ¡ Prepared Statements

    Kommentar


    • #3
      Ich habe mich da scheinbar etwas unklar ausgedrückt deshalb schicke ich mal ein Image dabei, wie das was ich meine Aussehen soll:
      Problem-Beispiel.jpg
      Ich möchte also meine Daten auf einen Sheet haben und auf dem anderen soll nur das Diagramm gezeigt werden mit der richtigen Formatierung.

      Kommentar


      • #4
        Zitat von ShadowCastiel Beitrag anzeigen
        Ich habe mich da scheinbar etwas unklar ausgedrückt deshalb schicke ich mal ein Image dabei, wie das was ich meine Aussehen soll: …
        Ich möchte also meine Daten auf einen Sheet haben und auf dem anderen soll nur das Diagramm gezeigt werden mit der richtigen Formatierung.
        Hi,

        oh ja offensichlich. Aber damit wär wenigstens geklärt das mein Glaskugel defekt ist. => Sheet != Seite

        Du hast jetzt die Anforderung das das Bild den kompletten viewport des Sheets ausfüllen soll. Da Du keine Ahnung hast wie groß der Viewport ist und welches Seitenverhältnis er hat (diese Infos kennst Du beim Erstellen noch nicht) stehst Du am Ende vor genau dem selben Problem. Falsches Ausgabemedium für Deine Anforderung.

        Gruß, Ulf
        PHP-Manual ¡ mysql_* ist veraltet ¡ Debugging: Finde DEINE Fehler selbst ¡ Passwort-Hashing ¡ Prepared Statements

        Kommentar


        • #5
          Die Anforderungen konnten sich doch nochmal ändern und somit konnte ich nun meine Probleme die ich bislang hatte selbst lösen.
          Jedoch nun habe ich ein weiteres Problem. Wenn ich das Chart erstelle ist die Y-Achse steht nun Mittig in dem Diagramm. Wie kann ich also in der Bibliothek diese Werte ändern? Gibt es da Möglichkeiten? Ich habe schon die ganze Zeit gegoogelt und nach Lösungen gesucht, jedoch konnte ich bislang keine Lösung finden.

          Kommentar

          Lädt...
          X