2013-07-18 3 views
6

Ich habe ein Raster mit einer großen Anzahl von Datensätzen. Ich verwende Filter, um die Daten nach Bedarf zu filtern. Aber ich möchte die gefilterten Daten in ein Excel-Blatt für die weitere Verwendung exportieren.Wie Extjs Grid-Daten zu Excel exportieren?

Ich ging durch einige verfügbare Artikel, aber sie scheinen unterschiedlich und nicht kompatibel mit der neuesten Version 4.2.

Bitte helfen Sie mir dabei auf einfache Weise zu erreichen.

Vielen Dank!

+0

Was Sie bisher versucht hatte ?? – Hariharan

Antwort

3

Soweit ich weiß, ist dies ohne eine serverseitige Implementierung in einer Cross-Browser-Art nicht möglich.

In der Theorie erstellen Sie eine OpenXML Dokument Zeichenfolge, indem Sie die aktuellen Datensätze aus dem Speicher lesen und mit Base64 codieren. Dann schreibe dies an eine Data Uri. Der erste, der keine Inline-Daten außer Bildern erlaubte, ist IE, daher wird dies aufgrund von Einschränkungen wie Größe und Bildern nicht für alle IE-Browser-Versionen funktionieren. Dies ist der Grund, warum es keine aktuellen Implementierungen gibt.

+0

Danke für die Info. Ich habe dies wie im Thread vorgesehen implementiert. Aber ich habe das im IE getestet. Wie du schon sagtest, muss ich das in anderen Browsern testen und sehen, was passiert! –

+0

Finden Sie den Thread http://www.sencha.com/forum/showthread.php?32400-GridPanel-directly-to-Excel. Ich habe es versucht wie im Thread erwähnt. Aber es gab einen Fehler, der besagt, dass "reg" nicht definiert ist. –

2

erfolgreich umgesetzt this Ansatz für Ext JS 4 eine Flexibilität einer abstrakten Klasse zu geben, folgen Sie den Anweisungen:

  1. Nehmen Sie Funktionen von here und extrahieren Sie sie in eine separate Klasse als global.
  2. Ersetzen Sie alle "diese" Funktionsreferenzen auf globale Funktionsaufrufe.

  3. Hinzufügen "Raster" -Parameter zu allen Funktionen beginnend mit dem Eintrag eins (downloadExcelXml()).

  4. Ersetzen Sie die verbleibenden "diese" Aufrufe von Rasterreferenzen (da erwartet wurde, dass Funktionen in einem Raster wirken).

  5. nun diese Schaltfläche in Ihrem Raster Konstruktor hinzufügen und downloadExcelXml() als Handler wie folgt aufrufen:

    exportButton = { 
        xtype: 'button', 
        text: 'xls', 
        listeners: { 
        click: function (button, event, eOpts) { 
        downloadExcelXml(
         false, 
         "TableHeader", 
         eOpts.data.grid); 
        }, 
        data: { 
        grid: this 
        } 
    };