Je souhaite ajouter des données de table d'exportation au format CSV, Excel, PDF dans mon application.
Je crée une application en utilisant angularjs 1.2.16.
J'ai utilisé
<script src="https://rawgithub.com/eligrey/FileSaver.js/master/FileSaver.js" type="text/javascript"></script>
pour exporter la table au format XLS en utilisant le code suivant:
var blob = new Blob([document.getElementById('exportable').innerHTML], {
type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8"
});
saveAs(blob, "report.xls");
le code ci-dessus fonctionne bien.
De la même manière, je veux exporter des données au format CSV et PDF format.
J'ai utilisé http://www.directiv.es/ng-csv pour exporter des données en CSV mais cela ne fonctionne pas correctement dans ubuntu libre office (le fichier montre des données corrompues) .
Quelqu'un peut-il me dire comment exporter des données de table au format CSV, Excel et PDF au format angularjs?
Vous pouvez exporter des données d'AngularJS vers les formats XLS, XLSX, CSV et TAB avec Alasql bibliothèque JavaScript avec XLSX.js .
Incluez deux bibliothèques dans le code:
Pour exporter des données au format Excel, créez une fonction dans le code du contrôleur:
function myCtrl($scope) {
$scope.exportData = function () {
alasql('SELECT * INTO XLSX("mydata.xlsx",{headers:true}) FROM ?',[$scope.items]);
};
$scope.items = [{a:1,b:10},{a:2,b:20},{a:3,b:30}];
};
Créez ensuite un bouton (ou tout autre lien) en HTML:
<div ng-controller="myCtrl">
<button ng-click="exportData()">Export</button>
</div>
Essayez cet exemple dans jsFiddle.
Pour enregistrer des données au format CSV, utilisez la fonction CSV ():
alasql("SELECT * INTO CSV('mydata.csv', {headers:true}) FROM ?",[$scope.mydata]);
Ou utilisez les fonctions TXT (), CSV (), TAB (), XLS (), XLSX () pour les formats de fichier appropriés.
Si vous êtes satisfait d'un fichier CSV, le module ngCsv est le chemin à parcourir. Vous ne chargez pas d'éléments du DOM mais exportez directement un tableau. Ici vous pouvez voir un échantillon de ngCsv en action.
Le html:
<h2>Export {{sample}}</h2>
<div>
<button type="button" ng-csv="getArray" filename="test.csv">Export</button>
</div>
et les js:
angular.module('csv', ['ngCsv']);
function Main($scope) {
$scope.sample = "Sample";
$scope.getArray = [{a: 1, b:2}, {a:3, b:4}];
}
enregistrer sous; Pour modifier l'extension de fichier enregistrée, par exemple: répertoire "f:\folder\report.html"?
var blob = new Blob([document.getElementById('exportable').innerHTML], {
type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8" });
saveAs(blob, "report.xls");
J'ai travaillé à travers plusieurs approches et j'ai conclu ce qui suit, typesafe (DefinitelyTyped):
exportAsExcel(tableId: string, fileName: string, linkElement: any) {
var uri = 'data:application/vnd.ms-Excel;base64,',
template = '<html xmlns:o="urn:schemas-Microsoft-com:office:office" xmlns:x="urn:schemas-Microsoft-com:office:Excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>',
base64 = function (s) {
return window.btoa(decodeURI(encodeURIComponent(s)));
},
format = function (s, c) {
return s.replace(/{(\w+)}/g, function (m, p) {
return c[p];
});
};
// get the table data
var table = document.getElementById(tableId);
var ctx = {
worksheet: fileName,
table: table.innerHTML
};
// if browser is IE then save the file as blob, tested on IE10 and IE11
var browser = window.navigator.appVersion;
if ((browser.indexOf('Trident') !== -1 && browser.indexOf('rv:11') !== -1) ||
(browser.indexOf('MSIE 10') !== -1)) {
var builder = new MSBlobBuilder();
builder.append(uri + format(template, ctx));
var blob = builder.getBlob('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
window.navigator.msSaveBlob(blob, fileName + '.xlsx');
} else {
var element = document.getElementById(linkElement);
var a = document.createElement('a');
a.href = uri + base64(format(template, ctx));
a.target = '_blank';
a.setAttribute('download', fileName + '.xlsx');
document.body.appendChild(a);
a.click();
}
toastr.success("Awesome!", "We've created an Excel report for you and you should get it as a download in your browser.");
}
Bravo à ceux qui ont bien sûr contribué dans les différents articles.
nous pouvons exporter les données d'une table dans différents formats, y compris Json, Xml, Pdf .....
Vous pouvez trouver des explications détaillées http://www.prathapkudupublog.com/2015/10/angular-export-to-table.html Remarque: cette implémentation ne s'exécuterait pas dans IE
De quoi avez-vous besoin? Angularjs Jquery.js Fichiers référencés ci-dessous tableExport.js, JqueryBase64.js, html2canvas.js, base64.js, Jspdf.js, sprintf.js
<script type="text/javascript">
var myAppModule = angular.module('myApp', []);
myAppModule.controller('myCtrl', function ($scope) {
$scope.exportData = function () {
$('#customers').tableExport({ type: 'json', escape: 'false' });
};
$scope.items = [
{
"FirstName": "Prathap",
"LastName": "Kudupu",
"Address": "Near Anjana Beach"
},
{
"FirstName": "Deepak",
"LastName": "Dsouza",
"Address": "Near Nariman Point"
}
];
});