seppel: Excel-Export in mehrere Sheets

hi,

ich suche nach einer Alternative zur ActiveX-Variante eines solchen Excel-Exports (Möglichkeit wäre z.B. diese)

ActiveX ist aber nicht "security-conform" ;-) Also kann ich das so leider hier nicht machen.

Eine andere sehr einfach Methode ist einfach den Ausgabetyp zu ändern:  Response.ContentType = "application/vnd.ms-excel"

alles was hier nach an HTML kommt, wird in ein Excel-Sheet geschrieben. Funktioniert auch ohne Probleme, jedoch müsste ich jetzt die Ausgabe in mehrere Sheets (innerhalb einer "Arbeitsmappe" oder wie man das nennt) aufteilen.

Ich arbeite hier mit ASP-Seiten, also VBScript und Javascript stehen zur Verfügung...

Bin für jede Idee dankbar.
Gruss,
Seppel

  1. ich suche nach einer Alternative zur ActiveX-Variante eines solchen Excel-Exports (Möglichkeit wäre z.B. diese)

    Haben jetzt nicht alles verstanden, aber Du kannst natürlich CSV-Dateien zum Download anbieten. Die mag MS Excel (und andere Sportsfreunde wie MS Access etc. auch).

    1. hi,

      Haben jetzt nicht alles verstanden, aber Du kannst natürlich CSV-Dateien zum Download anbieten. Die mag MS Excel (und andere Sportsfreunde wie MS Access etc. auch).

      auf der entsprechenden Seite werden tabellarische Daten angezeigt, die ich den User auch exportieren lasse. (derzeit mit der zweiten Variante, die ich geschildert habe)

      Jetzt gibt es aber auf dieser Liste verschiedene "Gruppen", also würde ich gerne anstatt eine zweiten Arbeitsmappe zu öffnen, einfach ein zweites Sheet beschreiben.

      Gruss,
      Seppel

      1. auf der entsprechenden Seite werden tabellarische Daten angezeigt, die ich den User auch exportieren lasse. (derzeit mit der zweiten Variante, die ich geschildert habe)

        Jetzt gibt es aber auf dieser Liste verschiedene "Gruppen", also würde ich gerne anstatt eine zweiten Arbeitsmappe zu öffnen, einfach ein zweites Sheet beschreiben.

        Sorry, sowas verstehen wir einfach nicht.
        Wäre es eine Idee hier mal kurz eine grobe Gesamtspezifikation der Anfoderung vorzustellen? Präzise und vollstzändig so zu sagen?

        1. hallo ihr zwei,

          danke erstmal für euer Interesse mir weiter zu helfen.

          Also: sagen wir ich hätte auf einer HTML-Seite eine Tabelle mit Kundenaufträgen.

          z.B.
          Id  Kunde  Auftrag
          -------------------
          1   x      a
          2   y      b

          wenn der User jetzt auf Export klick bekommt er die oben gezeigte Tabelle nach Excel exportiert. Derzeit rufe ich den Export für jeden Kunden einmal auf (d.h. es wird 2 mal ein Workbook(deutsches Excel=Arbeitsmappe) aufgemacht und mit dem jeweiligen Aufträgen gefüttert). Das setze ich derzeit um, indem ich die HTML-Tabelle mit diesen Statement: (Response.ContentType = "application/vnd.ms-excel") beginnen lasse und nur jeweils einen Kunden ausgebe.

          --> 1. Workbook:
          Id  Kunde  Auftrag
          -------------------
          1   x      a

          --> 2. Workbook:
          Id  Kunde  Auftrag
          -------------------
          2   y      b

          Funktioniert wunderbar...ABER, ich suche eine Möglichkeit diese Exports in ein und das selbe workbook abzusetzen. Noch genauer meine ich damit: die Daten des 1. Kunden landen auf Sheet1 und die Daten des 2. Kunden auf Sheet2...usw.

          Zu den Vokabeln Workbook und Sheet: Workbook ist was du bekommst, wenn du auf File/new/blank workbook klicks UND Sheet sind die 3 Sheets, die in diesem Workbook standardmässig offen sind.

          Es wäre super wenn jemand eine Idee hätte, wie ich (mit welchem Befehl und/oder Technik) ohne ActiveX etwas derartiges hinbekommen könnte.

          Vielen Dank schonmal,
          Seppel

          1. Hoffe mal, dass die Excel-Dateien serverseitig liegen. Falls ja, dann gehst Du mit den geeigneten ASP-Modulen oder was weiss ich auch immer auf die Datei.

            Liegt das Ding beim Client, dann brauchst Du ActiveX, wenns überhaupt geht.

  2. Hallo,

    Ich arbeite hier mit ASP-Seiten, also VBScript und Javascript stehen zur Verfügung...

    Warum also nicht serverseitig gleich ein Excel-Dokument erstellen, dass dann der Benutzer zum Speichern (oder Öffnen, je nahc Client-Konfiguration) angeboten bekommt.

    Grüße
      Klaus

    1. hi,

      Warum also nicht serverseitig gleich ein Excel-Dokument erstellen, dass dann der Benutzer zum Speichern (oder Öffnen, je nahc Client-Konfiguration) angeboten bekommt.

      genau das passiert ja jetzt schon - siehe auch dieses Posting

      Ich will ja nur das beim erstellen dieses Excels die Ausgabe in zwei Sheets möglich ist...

      Gruss,
      Seppel

      1. Hallo,

        Warum also nicht serverseitig gleich ein Excel-Dokument erstellen, dass dann der Benutzer zum Speichern (oder Öffnen, je nahc Client-Konfiguration) angeboten bekommt.

        genau das passiert ja jetzt schon -

        Nein, wenn Du es machst, wie hier beschrieben, dann erstellst Du eine HTML-Tabelle und lieferst sie mit ContentType: application/vnd.ms-excel aus und verlässt Dich darauf, dass Excel HTML-Tabellen interpretieren kann.

        Ich will ja nur das beim erstellen dieses Excels die Ausgabe in zwei Sheets möglich ist...

        HTML-Tabellen kennen keine Workbooks. Was Du willst, geht so also nicht. Dazu müsstest Du ein wirkliches Excel-Dokument von ASP auf dem Server erstellen lassen. Das geht mit ASP-ActiveX auf dem Server, wie hier angewendet. Dazu muss aber auf dem Server Excel installiert sein. Oder es geht z.B. mit so etwas.

        viele Grüße

        Axel

        1. hi,

          vielen Dank für die Antwort.

          Mir ist schon klar das HTML nichts mit Sheets und Co. anfangen kann, dachte nur ich könnte beim Ausgabetyp Excel ggf. auch sagen wohin er es schreiben soll. So in der Art, dass ich ihm ein bereits offenes oder vorhandenes File angeben könnte.

          Excel darf auf dem Server nicht installiert werden...kein Approval von IT-Security...pech für Mr. User, dann geht halt jedes mal ein neues Worksheet auf - gibt schlimmeres.

          Oder gibts doch noch ne Alternative ;-)

          Gruss,
          Seppel

          1. Hallo,

            Oder gibts doch noch ne Alternative ;-)

            Ja, XML als Excel Content-Type ausliefern. Das setzt aber mindestens Excel 2002 voraus.
            Beispiel:

              
            <?xml version="1.0"?>  
            <?mso-application progid="Excel.Sheet"?>  
            <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"  
             xmlns:o="urn:schemas-microsoft-com:office:office"  
             xmlns:x="urn:schemas-microsoft-com:office:excel"  
             xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"  
             xmlns:html="http://www.w3.org/TR/REC-html40">  
             <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">  
              <Author>Richter</Author>  
             </DocumentProperties>  
             <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">  
              <ProtectStructure>False</ProtectStructure>  
              <ProtectWindows>False</ProtectWindows>  
             </ExcelWorkbook>  
             <Styles>  
              <Style ss:ID="EUR_negativ_rot">  
               <NumberFormat ss:Format="#,##0.00\ [$EUR];[Red]\-#,##0.00\ [$EUR]"/>  
              </Style>  
             </Styles>  
             <Worksheet ss:Name="Tabelle1">  
              <Table>  
               <Row>  
                <Cell><Data ss:Type="String">Tabelle1 Zelle A1</Data></Cell>  
                <Cell ss:StyleID="EUR_negativ_rot"><Data ss:Type="Number">12345.6</Data></Cell>  
               </Row>  
              </Table>  
             </Worksheet>  
             <Worksheet ss:Name="Tabelle2">  
              <Table>  
               <Row>  
                <Cell><Data ss:Type="String">Tabelle2 Zelle A1</Data></Cell>  
                <Cell ss:StyleID="EUR_negativ_rot"><Data ss:Type="Number">-12345.6</Data></Cell>  
               </Row>  
              </Table>  
             </Worksheet>  
             <Worksheet ss:Name="Tabelle3">  
              <Table>  
               <Row>  
                <Cell><Data ss:Type="String">Tabelle3 Zelle A1</Data></Cell>  
               </Row>  
               <Row>  
                <Cell><Data ss:Type="String">Tabelle3 Zelle A2</Data></Cell>  
               </Row>  
               <Row>  
                <Cell></Cell>  
                <Cell><Data ss:Type="String">Tabelle3 Zelle B3</Data></Cell>  
               </Row>  
              </Table>  
             </Worksheet>  
            </Workbook>  
            
            

            Eine Referenz zum XML findest Du, indem Du xsdref.msi herunterlädst und installierst. Im Installationsordner gibt es einen Ordner Help mit einer OfficeXMLSDK.chm.

            viele Grüße

            Axel

            1. Moin,

              danke noch mal - ich werde mir das mal angucken. Vielleicht klappt es ja dann mit XML. Ansonsten müssen die sich Ihre Reports halt zusammenkopieren, wenn sie es unbedingt in einer Arbeitsmappe haben wollen...

              Gruss und schönen Tag noch,
              Seppel