J'ai des données json, je veux les exporter en tant que data.xlsx. Par example
J'ai une table, il y a un bouton d' exportation , si l'utilisateur clique sur ce bouton d'exportation, cette fonction ng-click fonctionnera.
contrôleurs.js :
$scope.exportDataXlsx = function () {
var json = $scope.contacts;
console.log(json);
$http.post('/api/exportcontactsxlsx', json).then(function (response) {
$state.reload();
toastr.success("exported successfully!");
});
};
Mon code API :
exports.exportContactsXlsx = function (req, res) {
var data = req.body;
var xls = json2xls(data);
fs.writeFileSync('data.xlsx', xls, 'binary');
}
J'utilise le package npm appelé jsonexport.
Si je clique sur exporter, le fichier sera téléchargé dans mon projet.
Mais j'ai besoin de sortie, lorsque l'utilisateur clique sur le bouton d'exportation. Le fichier 'data.xlsx' doit être téléchargé dans le coin gauche de Chrome et dans le répertoire de téléchargement par défaut de l'utilisateur.
après avoir enregistré votre fichier sur votre serveur. il vous suffit d'envoyer le nom de votre fichier pour pouvoir y accéder depuis le navigateur :
$scope.exportDataXlsx = function () {
var json = $scope.contacts;
console.log(json);
$http.post('/api/exportcontactsxlsx', json).then(function (response) {
downloadFile(response.fileName) // make sure response.fileName has the file name
$state.reload();
toastr.success("exported successfully!");
});
};
function downloadFile(name) {
var link = document.createElement('a');
link.download = name;
link.href = '/files/' + name;
link.click();
}
serveur :
// in app.js, to serve your files as static files
app.use("/files", express.static(path.join(__dirname, 'files')));
// send the the name of your file to the client
exports.exportContactsXlsx = function (req, res) {
var data = req.body;
var xls = json2xls(data);
fs.writeFileSync(path.join(__dirname,'../files/data.xlsx'), xls, 'binary');
//changed the directory
res.json({ fileName: 'data.xlsx' });
}
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots