Marco: Excel Export

Hallo,

ich exportiere eine Tabelle mit folgendem Code in eine Excel-Datei:

<?
 header("Content-type: application/vnd-ms-excel");
 header("Content-Disposition: attachment; filename=export.xls");
?>
<table>....</table>

Das funktioniert auch wunderbar inklusive mancher Formatierung wie Fett, Schriftfarbe etc.

Kann ich auch allgemeine Daten zum ausdrucken übergeben? Ich bräuchte:

  • Kopfzeile
  • Fußzeile
  • Fixierter Bereich, der auf jeder Seite gedruckt wird (erste Zeile im Dokument)

Und kann ich auch die Druckeinstellung schon übergeben? Wie folgt:

  • Querdruck
  • automatisch anpassen auf 1 Seite breit und x Seiten hoch

Danke für eure Ideen
Marco

  1. Kann ich auch allgemeine Daten zum ausdrucken übergeben? Ich bräuchte:

    • Kopfzeile
    • Fußzeile
    • Fixierter Bereich, der auf jeder Seite gedruckt wird (erste Zeile im Dokument)

    Also Kopf- und Fußzeile hab ich rausgefunden:

    <style>
    @page
     {mso-header-data:&ZKOPFZEILENTEXT;
     margin:.98in .79in .98in .79in;
     mso-header-margin:.49in;
     mso-footer-margin:.49in;}
    </style>

    Fixierter Bereich ist nicht so wichtig, da ich ja einfach meine Kopfzeile in der Tabelle wiederholen kann.. Wichtig ist nur nich der Querdruck und das autom. anpassen auf die Breite von einer Seite:

    Und kann ich auch die Druckeinstellung schon übergeben? Wie folgt:

    • Querdruck
    • automatisch anpassen auf 1 Seite breit und x Seiten hoch

    Beim speichern einer Excel-Datei als Webseite wird das wie folgt übergeben:

    im <head></head> Bereich steht folgendes:

    <!--[if gte mso 9]><xml>
     <x:ExcelWorkbook>
      <x:ExcelWorksheets>
       <x:ExcelWorksheet>
        <x:Name>Tabelle1</x:Name>
        <x:WorksheetOptions>
    //Hier kommt der Part, der das autom. anpasst, wie genau weiß ich allerdings nicht:
         <x:FitToPage/>
         <x:FitToPage/>
         <x:DefaultColWidth>10</x:DefaultColWidth>
         <x:Print>
          <x:FitHeight>0</x:FitHeight>
          <x:ValidPrinterInfo/>
          <x:PaperSizeIndex>9</x:PaperSizeIndex>
          <x:HorizontalResolution>600</x:HorizontalResolution>
          <x:VerticalResolution>600</x:VerticalResolution>
         </x:Print>
         <x:Selected/>
    //Hier hört der Bereich auf.
         <x:ProtectContents>False</x:ProtectContents>
         <x:ProtectObjects>False</x:ProtectObjects>
         <x:ProtectScenarios>False</x:ProtectScenarios>
        </x:WorksheetOptions>
       </x:ExcelWorksheet>
       <x:ExcelWorksheet>
        <x:Name>Tabelle2</x:Name>
        <x:WorksheetOptions>
         <x:DefaultColWidth>10</x:DefaultColWidth>
         <x:ProtectContents>False</x:ProtectContents>
         <x:ProtectObjects>False</x:ProtectObjects>
         <x:ProtectScenarios>False</x:ProtectScenarios>
        </x:WorksheetOptions>
       </x:ExcelWorksheet>
       <x:ExcelWorksheet>
        <x:Name>Tabelle3</x:Name>
        <x:WorksheetOptions>
         <x:DefaultColWidth>10</x:DefaultColWidth>
         <x:ProtectContents>False</x:ProtectContents>
         <x:ProtectObjects>False</x:ProtectObjects>
         <x:ProtectScenarios>False</x:ProtectScenarios>
        </x:WorksheetOptions>
       </x:ExcelWorksheet>
      </x:ExcelWorksheets>
      <x:WindowHeight>8700</x:WindowHeight>
      <x:WindowWidth>15195</x:WindowWidth>
      <x:WindowTopX>480</x:WindowTopX>
      <x:WindowTopY>135</x:WindowTopY>
      <x:ProtectStructure>False</x:ProtectStructure>
      <x:ProtectWindows>False</x:ProtectWindows>
     </x:ExcelWorkbook>
    </xml><![endif]-->

    Wenn ich das mitübergeben will bei HTML zu Excel (also den Code einfach in meiner Homepage adde) kann er die Datei aber nicht öffnen und sagt "Schwerer Fehler".

    Das Horizontal drucken übergibt Excel wie die Kopfzeile im <style> Bereich bei @page mit
    mso-page-orientation:landscape;

    Aber als Umkehrfunktion (also wenn ich das bei meiner Homepage mit einbaue) klappt das leider nicht, obwohl das mit der Kopfzeile geht. Wieso?

    Wenn jemand ne Idee hat immer raus damit ;-)

    Danke
    Marco

    1. Hi!

      Du vermischt da ein paar Dinge. Nimm den XML Code der auch von Excel generiert wird und baue damit deine Seite ohne HTML da reinzumischen.

      Das hier koennte auch  Dir weiterhelfen: http://forum.de.selfhtml.org/archiv/2008/9/t176987/#m1165193

      und vielleicht MS direkt: http://msdn.microsoft.com/en-us/library/aa140066.aspx

      --
      "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
            - T. Prachett
  2. hallo
    probiers dochmal mit dem PEAR::Spreadsheet_Excel_Writer
    http://pear.php.net/package/Spreadsheet_Excel_Writer/

    eine (ältere) Minianleitung:
    http://www.contentmanager.de/magazin/artikel_310-print_excel_export_mit_pear.html

    Gruß