2017-03-21 1 views
1

Ich verwende UI-Grid zum Erstellen einer Rasteransicht auf meine eckige Anwendung. UI-Grid ermöglicht den Export der gefilterten und vollständigen Grid-Daten in das CSV- oder PDF-Format. Aber ich muss die Daten in Excel exportieren.So exportieren Sie eckige UI-Grid-gefilterte und vollständige Daten in Excel

Ich habe früher Alasql verwendet, um Rasterdaten zu exportieren, aber ich verwendete ng-repeat, um das Raster zu generieren.

Hier kümmert sich Ui-Grid-Direktiven um das Generieren des Rasters und mithilfe einfacher Methoden, die durch die UI-Grid-Direktive verfügbar gemacht werden, können wir Daten exportieren. Ich wollte nur wissen, ob jemand versucht hat, die Daten in Excel zu exportieren.

Nicht teilen den Code, da ich den gleichen Code wie von UI-Grid-Tutorials und seine Arbeit für mich verwendet, nur dass ich Export in Excel-Datei verwenden.

+0

der einfachste Weg, den ich jetzt denke, ist, csv-formatierten Inhalt zu generieren und es als Blob-Objekt mit csv-Erweiterung – neptune

+0

Die CSV-Daten sollten automatisch in Excel geöffnet werden. Ich benutze auch UI-Grid, wenn ich als CSV exportiere und auf "Öffnen" klicke öffnet sich Excel mit den Daten in einem Arbeitsblatt. Was passiert, wenn Sie Ihre heruntergeladenen CSV-Daten öffnen? –

+0

Im Allgemeinen, wenn wir eine CSV in Excel öffnen, kommen alle Daten in einer Spalte. Es sei denn, wir haben csv einmal in excel importiert, indem wir die Option Daten> Von Text verwendet haben und "," als Delimeter angegeben haben. Auch wenn wir diese Aktion einmal in einer beliebigen CSV-Datei durchgeführt haben, wird Excel dasselbe Trennzeichen anwenden und die Daten in verschiedenen Spalten generieren, damit wir später jederzeit einen csv in Excel öffnen können. – techprat

Antwort

2

Ich arbeite auch an einer App mit ui-Raster, um Daten zu exportieren ich so hatte verwendet, um xlsx alasql:

$scope.exportXLS = function exportXLS() { 
    alasql.promise('SELECT * INTO XLSX("data.xlsx",{headers:true}) FROM ?',[$scope.gridOptions.data]) 
.then(function(data){ 
    console.log('Data saved as XLSX'); 
    }).catch(function(err){ 
    console.log('Error:', err); 
    }); 
}; 

und nur die filterd Daten zu exportieren ich es gridApi wie folgt aus :

$scope.filteredData =$scope.gridApi.core.getVisibleRows($scope.gridApi.grid); 

dann die Entität Feld zu einem neuen Array in zurückgegebene Array von jeder Objektkarte , I durchgeführt, dass Kartenfunktion von Unterstreichungs lib verwenden.

entities = _.map($scope.filteredData, 'entity'); 

und schließlich '$ scope.gridOptions.data' mit 'Einheiten' oben in Funktion ersetzen.

+0

Erhalten vollständigen Datenexport ist in Ordnung, aber wenn ich getVisibleRows-Methode auf dem Raster verwenden, gibt es Metadaten über die gefilterten Zeilen und nicht die Daten dieser Zeilen – techprat

+1

Sie haben Recht, tut mir leid mein schlechtes. Die Funktion gridApi.core.getVisibleRows gibt ein Array von Objekten zurück, die jeweils ein Entity-Feld enthalten (also die eigentliche Zeile). Um nur die Zeilen zu erhalten, habe ich die map-Funktion von Unterstreichung lib "entities = _.map ($ scope.filteredData, 'entity');". – Marian

+0

cool das hat funktioniert, vielen dank :) – techprat

Verwandte Themen