Я создал Excel
файл с помощью excel4node
:
...
var express = require('express');
var router = express.Router();
var xl = require('excel4node');
...
router.post("/sendMailReporting", function(req, res) {
var wb = new xl.Workbook();
var sheet1 = wb.addWorksheet('Résumé');
var titleStyle = wb.createStyle({
font: {
bold: true,
size: 24
}
});
var subTitleStyle = wb.createStyle({
font: {
bold: true,
size: 10
},
fill: {
type: 'pattern',
patternType: 'solid',
fgColor: 'e9e9e9'
}
});
var enteteStyle = wb.createStyle({
font: {
bold: true,
size: 11
},
fill: {
type: 'pattern',
patternType: 'solid',
fgColor: 'e9e9e9'
}
});
// titre
sheet1.cell(1, 1).string("Reporting quotidien George").style(titleStyle);
// sous-titres
sheet1.cell(3, 1).string("Flotte").style(subTitleStyle);
sheet1.cell(4, 1).string("Début").style(subTitleStyle);
sheet1.cell(5, 1).string("Fin").style(subTitleStyle);
sheet1.cell(6, 1).string("Génération").style(subTitleStyle);
// données sous-titre
sheet1.cell(3, 2).string(req.body.flotte_lib);
var dateDeb = moment(), dateFin = moment(), zao = moment();
if (req.body.donnee.indexOf("/") == -1) {
dateDeb = moment().subtract(1, 'days');
} else {
dateDeb = moment(req.body.donnee, "DD-MM-YYYY");
}
sheet1.cell(4, 2).string(dateDeb.format("dddd DD MMMM YYYY").concat(" à 00:00"));
sheet1.cell(5, 2).string(dateFin.format("dddd DD MMMM YYYY").concat(" à 00:00"));
sheet1.cell(6, 2).string(zao.format("dddd DD MMMM YYYY").concat(" à ").concat(zao.format("HH:mm")));
// entêtes
sheet1.cell(8, 1).string("Véhicule").style(enteteStyle);
sheet1.cell(8, 2).string("Immatriculation").style(enteteStyle);
sheet1.cell(8, 3).string("Conducteur").style(enteteStyle);
sheet1.cell(8, 4).string("Date de début").style(enteteStyle);
sheet1.cell(8, 5).string("Date de fin").style(enteteStyle);
sheet1.cell(8, 6).string("Temps dans la zone").style(enteteStyle);
sheet1.cell(8, 7).string("Temps hors zone").style(enteteStyle);
sheet1.cell(8, 8).string("hors zone \n sortie zone / retour zone").style(enteteStyle);
sheet1.cell(8, 9).string("Durée de roulage").style(enteteStyle);
sheet1.cell(8, 10).string("Distance parcourue").style(enteteStyle);
sheet1.cell(8, 11).string("Vitesse moyenne").style(enteteStyle);
sheet1.cell(8, 12).string("Vitesse maximale").style(enteteStyle);
sheet1.cell(8, 13).string("Durée des arrêts").style(enteteStyle);
sheet1.cell(8, 14).string("Nombre d'arrêts").style(enteteStyle);
// données
var critereHierDeb = (dateDeb.format("YYYY-MM-DD")).concat("T00:00:00"), critereHierFin = (dateDeb.format("YYYY-MM-DD")).concat("T23:59:59");
if (req.body.donnee.indexOf("/") == -1) { // choix sur véhicule
async.parallel({
vehicule: function(cb_vehicule) {
connexion.query("select vehicule_nom, immatriculation from "+utils.getPrefixNomTables()+"vehicule where numero_tag_ip = ?", [req.body.donnee], (err, rows) => {
if (err) {
throw err;
}
cb_vehicule(null, rows[0]);
});
},
conducteur: function(cb_conducteur) {
connexion.query("select c.msisdn from "+utils.getPrefixNomTables()+"vehicule v join "+utils.getPrefixNomTables()+"conducteur c on v.conducteur_id = c.conducteur_id where v.numero_tag_ip = ?", [req.body.donnee], (err, rows) => {
if (err) {
throw err;
}
if (rows.length > 0 && rows[0].msisdn != null) {
var soap = require('strong-soap').soap;
var url = "https://www.telma.net/sentinel/mvola/wsdl.php?module=jWSDL&action=WSDL:wsdl&service=mvola~WSMVolaGetInfosKYC";
var num = (rows[0]).msisdn;
var ret = {};
var requestArgs = {
module:'jWSDL',
action:'WSDL:wsdl',
service:'mvola~WSMVolaGetInfosKYC',
zSubscriberId:""+num
};
var options = {};
soap.createClient(url, options, function(err, client) {
if (client != undefined) {
var method = client['WSMVolaGetInfosKYCCtrl']['WSMVolaGetInfosKYCCtrlPort']['getInfosKYC'];
method(requestArgs, function(err, result, envelope, soapHeader) {
var jsonRoot = result.getInfosKYCReturn;
var jsonStatusCode = jsonRoot.status_Code;
var statusCode = jsonStatusCode["$value"];
if (statusCode == "000") {
var jsonData = jsonRoot.oDataKYC;
var jsonLast_name = jsonData.Last_name;
var jsonFirst_name = jsonData.First_name;
var Last_name = jsonLast_name['$value'] , First_name = jsonFirst_name['$value'];
cb_conducteur(null, Last_name+" "+First_name);
} else cb_conducteur(null, "");
});
}
else cb_conducteur(null, "");
});
} else {
cb_conducteur(null, "");
}
});
},
"dateDebut": function(cb_dateDebut) {
request({
url: "https://alfred.telma.net/track_/trackable/dateDebut/".concat(req.body.donnee).concat("?start=").concat(critereHierDeb).concat("&end=").concat(critereHierFin)
}, function (error, response, body) {
var data = JSON.parse(body);
var dataJSON = data[0];
var dateDebut = dataJSON.Date_debut;
var momentDateDebut = (dateDebut == "" ? null : moment(dateDebut, "DD-MM-YYYY, H:m:ss"));
if (dateDebut == "")
cb_dateDebut(null, "");
else
cb_dateDebut(null, momentDateDebut.format("DD/MM/YYYY HH:mm"));
});
},
"dateFin": function(cb_dateFin) {
request({
url: "https://alfred.telma.net/track_/trackable/dateFin/".concat(req.body.donnee).concat("?start=").concat(critereHierDeb).concat("&end=").concat(critereHierFin)
}, function (error, response, body) {
var data = JSON.parse(body);
var dataJSON = data[0];
var dateFin = dataJSON.Date_fin;
var momentDateFin = (dateFin == "" ? null : moment(dateFin, "DD-MM-YYYY, H:m:ss"));
if (dateFin == "")
cb_dateFin(null, "");
else
cb_dateFin(null, momentDateFin.format("DD/MM/YYYY HH:mm"));
});
},
"dureeRoulage": function(cb_duree_roulage) {
request({
url: "https://alfred.telma.net/track_/trackable/dureeRoulage/".concat(req.body.donnee).concat("?start=").concat(critereHierDeb).concat("&end=").concat(critereHierFin)
}, function (error, response, body) {
var data = JSON.parse(body);
var dataJSON = data[0];
var Duree_roulage = dataJSON.Duree_roulage;
if (Duree_roulage == "00")
cb_duree_roulage(null, "");
else {
moment_Duree_roulage = moment(Duree_roulage, "H:m:s");
cb_duree_roulage(null, moment_Duree_roulage.format("H[h] mm[m] ss[s]"));
}
});
},
"distanceParcourue": function(cb_distance_parcourue) {
request({
url: "https://alfred.telma.net/track_/trackable/parcours/".concat(req.body.donnee).concat("?start=").concat(critereHierDeb).concat("&end=").concat(critereHierFin)
}, function (error, response, body) {
var data = JSON.parse(body);
var dataJSON = data[0];
var Distance_parcours = dataJSON.Distance_parcours;
Distance_parcours = utils.truncateDecimal(Distance_parcours/1000, 1);
cb_distance_parcourue(null, (Distance_parcours.toString()).concat(" km"));
});
},
"vitesseMoyenne": function(cb_vitesse_moyenne) {
request({
url: "https://alfred.telma.net/track_/trackable/vitesseMoyen/".concat(req.body.donnee).concat("?start=").concat(critereHierDeb).concat("&end=").concat(critereHierFin)
}, function (error, response, body) {
var data = JSON.parse(body);
var dataJSON = data[0];
cb_vitesse_moyenne(null, ((dataJSON.Vitesse_moyen).toString()).concat(" km/h"));
});
},
"vitesseMax": function(cb_vitesse_max) {
request({
url: "https://alfred.telma.net/track_/trackable/vitesseMax/".concat(req.body.donnee).concat("?start=").concat(critereHierDeb).concat("&end=").concat(critereHierFin)
}, function (error, response, body) {
var data = JSON.parse(body);
var dataJSON = data[0];
cb_vitesse_max(null, ((dataJSON.Vitesse_max).toString()).concat(" km/h"));
});
},
"dureeArret": function(cb_duree_arret) {
request({
url: "https://alfred.telma.net/track_/trackable/dureeArret/".concat(req.body.donnee).concat("?start=").concat(critereHierDeb).concat("&end=").concat(critereHierFin)
}, function (error, response, body) {
var data = JSON.parse(body);
var dataJSON = data[0];
var dureeArret = dataJSON.Duree_arret;
if (dureeArret == "00")
cb_duree_roulage(null, "");
else {
moment_Duree_arret = moment(dureeArret, "H:m:s");
cb_duree_arret(null, moment_Duree_arret.format("H[h] mm[m] ss[s]"));
}
});
},
"nbArret": function(cb_nb_arret) {
request({
url: "https://alfred.telma.net/track_/trackable/nombreArret/".concat(req.body.donnee).concat("?start=").concat(critereHierDeb).concat("&end=").concat(critereHierFin)
}, function (error, response, body) {
var data = JSON.parse(body);
var dataJSON = data[0];
cb_nb_arret(null, dataJSON.Nombre_arret);
});
}
}, function(err, results) {
var vehicule = results.vehicule;
sheet1.cell(9, 1).string(vehicule.vehicule_nom);
sheet1.cell(9, 2).string(vehicule.immatriculation);
sheet1.cell(9, 3).string(results.conducteur);
sheet1.cell(9, 4).string(results.dateDebut);
sheet1.cell(9, 5).string(results.dateFin);
sheet1.cell(9, 9).string(results.dureeRoulage);
sheet1.cell(9, 10).string(results.distanceParcourue);
sheet1.cell(9, 11).string(results.vitesseMoyenne);
sheet1.cell(9, 12).string(results.vitesseMax);
sheet1.cell(9, 13).string(results.dureeArret);
sheet1.cell(9, 14).number(results.nbArret);
// nom du fichier
var tps = moment().format('YYYYMMDHHmmss')+moment().milliseconds();
var nom_fichier = "reporting"+tps+".xlsx";
// création du fichier
wb.write(path.join(__dirname, '../public/pjreporting/'+nom_fichier));
res.send("");
});
}
});
Во время выполнения столбцы автоматически не настраиваются на максимальную ширину содержимого:
Так как программно отрегулировать ширину всех столбцов до их максимальной длины содержимого?