Beiträge von Bodaggnmo

    Hallo zusammen,


    meine Seite besteht aus 3 php files, die verschiedene Bereiche der Seite darstellen. In einer davon hat der Benutzer die Möglichkeit, via Dropsdowns, eine Ergebnisliste die in einem anderen php File dargestellt wird einzuschränken. Deswegen habe ich 2 Buttons unter den Dropdowns. Einer davon schickt das Formular ab, und lädt die Ergebnisliste neu. Dies mach ich ganz einfach mit:


    PHP
    1. echo '<form method="POST" action="result.php?v1='.$v1.'&v2='.$v2.'&v3='.$v3.'" target="result">', PHP_EOL;// ein Dropdown als Beispiel$select= '<select name="v1" >';$select.='<option selected></option>';$select.='<option>verpflichtend</option>';$select.='<option>tailorbar</option>';$select.='</select>';//Buttonsecho '<td align="right"> <button type="reset">Reset</button></td><td align="left"><input type="submit" name="Submit" value="Filter"></td>';


    Der Reset Button leert so natürlich nur die Dropdownauswahl und dann muss der Benutzer aber noch auf Filter drücken um die Ergebnisliste neuzuladen.

    Das ist umständlich und es wäre schöner wenn der Benutzer durch Reset direkt die andere php Seite neu laden kann.


    Ich habe schon folgende Sachen probiert:


    Code
    1. <form method="POST" action="result.php?v1=%&v2=%&v3=%"><input type="submit" value="Reset" ></form>
    2. genauso hab ich probiert mit onclick das auszuführen, aber konnte es nicht richtig umsetzen. Ich hab auch überlegt mit unset($v1) die Variablen zu löschen, aber dann ist die ja ganz gelöscht und in den Button konnt ich die Funktion auch nicht einbauen


    Hat da jemand noch ne Idee, wie man das am Besten umsetzen kann?


    Vielen Dank schonmal



    [/Code]


    Sorry, da bin ich jetzt noch viel zu wenig Erfahrung.

    Was bedeutet in unkomprimierter Form? Ich hab die Skripte alle kopiert und in meine JS Dateien eingefügt um sie dann lokal zu besitzen und keine Verbindung auf externe Server geschieht.


    Im Debugger müsste dann ein Fehler kommen, warum der Button im IE11 keine Funktion hat?

    Ich benutze genau den selben Code:


    HTML
    1. <html>
    2. <head>
    3. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    4. <script type="text/javascript" src="javascript/shim.min.js"></script>
    5. <script type="text/javascript" src="javascript/xlsx.full.min.js"></script>
    6. <script type="text/javascript" src="javascript/blob.js"></script>
    7. <script type="text/javascript" src="javascript/FileSaver.js"></script>
    8. </head>
    9. <Body>


    PHP
    1. echo '<div id="container2">';
    2. echo '<table id = "data-table">';
    3. echo "<tr>";
    4. usw.



    Nur den Button hab ich leicht verändert und der steht bei mir oberhalb der Tabelle, weil diese zum Teil sehr groß ist (wird dynamisch je nach Benutzerauswahl erzeugt).


    HTML
    1. <p id="xportxlsx" class="xport"><input type="submit" value="Excel Download" onclick="doit('xlsx');"> <b> for Microsoft Edge, Google Chrome, Mozilla Firefox</b></p>


    Die JS Dateien hab ich auch, wie mir Sailor geraten hat zum Test mit den Hyperlinks komplett eingebaut, das hat aber zu keinem Erfolg geführt.

    Code
    1. <script type="text/javascript" src="https://unpkg.com/xlsx@0.13.3/dist/shim.min.js"></script>
    2. <script type="text/javascript" src="https://unpkg.com/xlsx@0.13.3/dist/xlsx.full.min.js"></script>
    3. <script type="text/javascript" src="https://unpkg.com/blob.js@1.0.1/Blob.js"></script>
    4. <script type="text/javascript" src="https://unpkg.com/file-saver@1.3.3/FileSaver.js"></script>


    Habs jetzt genauso eingebunden. Ändert sich bei mir leider trotzdem nichts, wenn es bei dir geht liegt es bei mir vielleicht doch an irgendeiner Firewall oder ähnlichem.

    Danke für deine Mühe. Das ändert jedoch bei mir gar nichts. Hab bei meiner Internetrecherche rausgefunden, das McAfee scheinbar manchmal auch was blockiert, aber das ist von der Firma vorgegeben und vorinstalliert. Unterm Strich werden ja die Skripten alle geladen, nachdem ich deinen Tipp mit dem alert ausprobiert hab.

    Hab diesen alert auch in die ganzen Javascripte eingebunden, die ich mir lokal abgespeichert hab und über src zugreif.


    Code
    1. <script type="text/javascript" src="javascript/shim.min.js"></script>
    2. <script type="text/javascript" src="javascript/xlsx.full.min.js"></script>
    3. <script type="text/javascript" src="javascript/blob.js"></script>
    4. <script type="text/javascript" src="javascript/FileSaver.js"></script>


    auch die Meldungen kommen alle. Nachdem alle Javascripte ausgeführt werden beim Laden der Seite, muss es ja doch an dem Button liegen.

    Beziehungsweise werden die Javascripte scheinbar direkt ausgeführt, und der Button hat deswegen keine Funktion mehr?

    Guten Morgen Zusammen,


    ich erzeuge eine dynamische Tabelle für eine Internetseite mittels php. Diese soll der Benutzer als xlsx herunterladen können. Nach erfolglosen Herumprobieren mit PHPSpreadsheet & co, bin ich auf ein JavaScript gestoßen, dass ich eingebunden hab und das für Microsoft Edge, Google Chrome und Mozilla Firefox auch funktioniert.


    Das zugrundeliegende Skript ist in PHP programmiert. Um das Javascript auszulösen verlass ich für den Button die php Datei, weil ich mich sonst nicht richtig auf die Funktion beziehen kann


    HTML
    1. ?>
    2. <p id="xportxlsx" class="xport"><input type="submit" value="Excel Download" onclick="doit('xlsx');"></p>
    3. <?php


    mit echo brauch ich ja entweder " oder ' um den button mit html zu beschreiben, und dieses ' brauch ich ja aber hinter um die Funktion richtig zu beschreiben.


    In IE11 ist Javascript auch aktiviert, aber wenn ich da auf den Button klick passiert einfach rein gar nichts. Muss man für IE11 irgendeine andere Programmierform verwenden?


    Viele Grüße


    Edit: Hab festgestellt, dass man im IE11 einfach Rechtsklick auf die Tabelle machen und kann und da Export to MS Excel hat. Gibt's hierfür ne Möglichkeit, einen button einzuführen der genau das ausführt?

    Das dahinterliegende Skript hinter dem Menüpunkt Export to MS Excel kann ich nicht finden.

    Also die Testdatei hello word hab ich zum laufen bekommen, genau so wie es da beschrieben ist


    PHP
    1. require 'vendor/autoload.php';use PhpOffice\PhpSpreadsheet\Spreadsheet;use PhpOffice\PhpSpreadsheet\Writer\Xlsx;$spreadsheet = new Spreadsheet();$sheet = $spreadsheet->getActiveSheet();$sheet->setCellValue('A1', 'Hello World !');$writer = new Xlsx($spreadsheet);$writer->save('hello world.xlsx');



    Ich hab jetzt aber das Problem, dass ich ja dynamische Arrays generieren, und alle Zellen variablen nach Nutzerauswahl sind. Da müsste ich ja irgendwie ein Array bei setCellValue verwenden.. weiß jemand wo ich mich da schlau machen kann, oder hat jemand sowas schon gemacht?


    edit: Grad doch noch was gefunden

    PHP
    1. $worksheet = $spreadsheet->getActiveSheet();
    2. $rows = $worksheet->toArray();


    mal schauen obs damit irgendwie klappt


    Hm okay, also ich arbeite hier auf ner Entwicklungsumgebung von xampp, da start ich Apache und mysql und dann kann ich im Internet auf meinem localhost die Änderungen testen. Für diesen Composer soll ich ja wie oben geschrieben ne commandline angeben von php.. soll irgendwas mit php.exe sein.. Sowas hab ich auf meinem PC aber nicht installiert. Ich weiß, dass es auf dem Server PHPmyadmin gibt. Kann ich diesen Composer dann nur direkt auf dem Server installieren?

    Tut mir leid, aber ich komm da nicht zurecht. Da steht, dass man den Composer installieren muss. Da kommt während des Setups aber irgendwann "Choose the command-line PHP you want to use". Da gibt's nix bei mir..


    Auf ner anderen Seite steht "

    Copy the spreadsheet folder with all its content on your server.

    - It contains also all the 3rd party required php libraries, in the "vendor/" folder. So, you can create PDF documents and Charts." (https://www.escarcega.gob.mx/web-files/phpexcel/readme.html).


    Ich hab den Ordner geladen aber da gibt's diesen vendor Folder gar nicht..


    Die Dateien workbooks.xml und sheets.xml hab ich auch nicht gefunden. Hab mir dann ne Test xlsx erstellt, die gepackt und wieder entpackt aber da weiß ich jetzt auch nicht welche Definitionen ich übernehmen kann, weil da ist im zip nur dann die Test.xlsx :D


    Ich steh wahnsinnig auf der Leitung, hebt mich mal bitte runter :D


    Dateien

    • download.jpg

      (229,63 kB, 3 Mal heruntergeladen, zuletzt: )

    Lösung gefunden, kann mir zwar nicht erklären warum aber es funktioniert.



    Diese beiden Zeilen bewirken, warum auch immer, dass die Tabelle richtig angezeigt wird, nachdem man eine Leerzeile hat. Ich hab gedacht nachdem vieles in einer Zelle steht, dass ich vielleicht mehrere Tabellen brauch. Und nachdem ich rumprobiert hab gings aufeinmal mit dieser einen Zeile.


    Danke für eure Hilfe, denk das was ich da rausgefunden hab ist die schnellste Lösung um eine HTML Tabelle in Excel zu exportieren.


    Edit: Naja bisschen zu früh gefreut, funktioniert nur mit Microsoft Edge

    Guten Morgen Zusammen,


    ich bin jetzt schon ziemlich weit gekommen, mit der Idee den HTML Table zu bauen. Hab unter der ursprünglichen Ergebnisliste (die ja anders aussieht als es in Excel sein soll) einen Button hinzugefügt, mit dem ich meine neue php Datei aufrufe. In der neuen PHP Datei hab ich dann mir nen Table zusammengebaut, der auch genauso aussieht wie es jetzt in Excel aussehen soll.


    Anschließend hab ich im Internet noch etwas sehr nützliches gefunden, mit ein paar wenigen Codezeilen wird die neue php Datei direkt zum "Downloadobjekt".

    Danach folgt ganz normal der Aufbau des Tabels.


    Und siehe da, mit diesen wenigen Codezeilen wird wirklich dann die datei im xls Format heruntergeladen und lässt sich auch mit Excel öffnen. Die Datei sieht nun schon deutlich schöner aus als die alte im csv Format. Jedoch passt auch hier die Formatierung nicht richtig. Der schreibt die ganzen header und ein paar informationen die schon in den Datenzellen stehen in die 1. Zelle und wechselt danach willkürlich in weitere Zellen nach unten.


    Weiß jemand, ob man da den Table anders designen muss, dass die Aufteilung der Zeilen und Spalten übernommen wird?


    Edit: Das Spreadsheet hab ich mir auch mal näher angeschaut. Hier scheitert es bei mir schon bei der Installation von dem composer den man dazu braucht, weil ich gar keine php.exe hab. Ich arbeite hier mit ner lokalen Entwicklungsumgebung mit XAMPP und dann kann ich diesen composer nicht mit php verbinden.


    Und ich glaub ich müsste im head bereich noch irgendwie deklarieren, dass die html Tabelle kein text ist sondern eben eine Tabelle.. gibts hierfür etwas? Weil der Datenexport funktioniert ja optimal, nur es wird als Fließtext mit willkürlicher Zeilenaufteilung ausgegeben

    Oh ok, Arnes Antwort hab ich jetzt erst gelesen nachdem ich meinen letzten Beitrag gepostet hab. Danke auch dir für den Hinweis. Dann wirds jetzt doch darauf hinauslaufen, dass ich die Tabelle trotzdem aufbau in einer externen php Datei.

    Die muss ich dann nur über den Downloadbutton in der ursprünglichen Datei aufrufen und dann wird hoffentlich die Tabelle in Excel direkt angezeigt :)


    Ich muss mich hier echt nochmal entschuldigen, dass ich soviel frag, und manche Sachen für euch Profis echt wirr klingen. Ich bin eben kompletter neuling und versuch mich so gut es geht "durchzukämpfen". Danke aufjedenfall für die ganzen Hilfen