ΠΡΠΈΠ²Π΅Ρ,
Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ @sendgrid/mail β Β«^6.3.1Β» ΠΈ ΡΠ·Π΅Π» β 10.14.1.
ΠΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΈΠ· Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Excel, Ρ ΠΌΠΎΠ³Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΏΠΎΡΡΡ Ρ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π½ΠΎ ΠΊΠΎΠ³Π΄Π° Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΡΡΡΠΎΠΊ ΠΈΠ· Π΄Π°Π½Π½ΡΡ
Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
Π² Excel Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΡ, Ρ ΠΏΠΎΠ»ΡΡΠ°Ρ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ 0 Π±Π°ΠΉΡΠ°ΠΌΠΈ. Π― ΡΠ°ΠΊΠΆΠ΅ Π²ΡΡΠ°Π²ΠΈΠ» ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΡΠ°ΠΉΠ». Π― ΠΏΡΡΠ°ΡΡΡ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ ΡΠΎΡ ΠΆΠ΅ ΡΠ°ΠΉΠ», ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΡΠ΅ΡΠ΅Π· ΠΌΠΎΠ΄ΡΠ»Ρ exceljs. Π― ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ±ΠΎΠ²Π°Π», Π½ΠΎ ΠΏΠΎΡΠ΅ΡΠΏΠ΅Π» Π½Π΅ΡΠ΄Π°ΡΡ ... Π³Π΄Π΅ Ρ ΠΌΠΎΠ³Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΎΡ ΠΆΠ΅ ΡΠ°ΠΉΠ» excel - Ρ ΡΡΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ -
"
res.setHeader("Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
res.setHeader("Content-Disposition", "attachment;filename='" + excelFile.excelOffFile + "'");
workbookFinal.xlsx.write(res).then(() => {
ΠΡΠΏΡΠ°Π²ΠΈΡΡ(); }); Ρ
"
ΠΠΎΠΉ ΠΊΠΎΠ΄ Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΏΠΎΡΡΡ -
sgMail.send({
Π²: config.get("mail.defaultAdd"),
ΠΎΡ: fromMailAdd,
ΡΠ΅ΠΌΠ°: "ΠΠ°ΠΊΠ°Π· Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Excel ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠ΅ΡΠ΅Π· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ ",
HTML: <h1>Test Mail</h1>
,
Π²Π»ΠΎΠΆΠ΅Π½ΠΈΡ: [
{
ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅: fs.readFileSync(excelFile.excelOffFilePath, {ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ°:"base64"}),
ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°: excelFile.excelOffFile,
ΡΠΈΠΏ: "application/vnd.ms-excel"
},
{
ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅: fs.readFileSync(excelFile.excelFactFilePath, {ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ°: "base64"}),
ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°: excelFile.excelFactFile,
ΡΠΈΠΏ: "application/vnd.ms-excel"
},
{
ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅: fs.readFileSync(excelFile.excelBrFilePath, {ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ°: "base64"}),
ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°: excelFile.excelBrFile,
ΡΠΈΠΏ: "application/vnd.ms-excel"
},
{
ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅: fs.readFileSync(excelFile.excelSuFilePath, {ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ°: "base64"}),
ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°: excelFile.excelSuFile,
ΡΠΈΠΏ: "application/vnd.ms-excel"
}
]
})
ΡΠΊΡΠΈΠ½ΡΠΎΡ ΠΏΠΎΡΡΡ -
ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΏΠΎΠΌΠΎΠ³ΠΈΡΠ΅ ΠΌΠ½Π΅, ΠΊΠ°ΠΊ ΡΠ΅ΡΠΈΡΡ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅.
ΠΡΠΈΠ²Π΅Ρ @prasoojalan ,
ΠΠΎΡ
ΠΎΠΆΠ΅, Ρ Π²Π°Ρ Π»ΠΈΠ±ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ ΠΏΡΡΠ΅ΠΌ ΠΊ ΡΠ°ΠΉΠ»Ρ, Π»ΠΈΠ±ΠΎ Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΎΠΉ ΡΠ°ΠΉΠ»Π°. Π― Π±Ρ Π΄Π²Π°ΠΆΠ΄Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΠ» Π·Π½Π°ΡΠ΅Π½ΠΈΡ excelFile.*
Π² Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅, ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΡΠ°ΠΉΠ» ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ. ΠΠ°ΡΠ΅ΠΌ Ρ Π±Ρ ΡΠ±Π΅Π΄ΠΈΠ»ΡΡ, ΡΡΠΎ ΡΠ°ΠΌ ΡΠ°ΠΉΠ» ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ Π² base64. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ , ΡΡΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΌΠΎΡΡ Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ.
Π‘ Π½Π°ΠΈΠ»ΡΡΡΠΈΠΌΠΈ ΠΏΠΎΠΆΠ΅Π»Π°Π½ΠΈΡΠΌΠΈ,
ΠΠ»ΠΌΠ΅Ρ
ΠΡΠΈΠ²Π΅Ρ @ ΠΠ»ΠΌΠ΅Ρ
ΠΠΎΠΉ ΠΏΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠ΄ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠ°ΠΉΠ»Π° Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
Π― ΠΏΠΎΠΏΡΡΠ°Π»ΡΡ ΡΠΊΠ°Π·Π°ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ ΠΏΡΡΡ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½ΠΎ ΡΡΠΎ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΎ. Π‘Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΎΡ ΠΆΠ΅ ΡΠ°ΠΉΠ» Excel ΡΡΠΏΠ΅ΡΠ½ΠΎ Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ Π² Π±ΡΠ°ΡΠ·Π΅Ρ... ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ ΠΌΠ½Π΅ Π½Π΅ Ρ
Π²Π°ΡΠ°Π΅Ρ ΠΈΠ»ΠΈ Ρ Π½Π΅ ΠΌΠΎΠ³Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΏΠΎΠ½ΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ... Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π²Ρ ΠΌΠ½Π΅ ΠΏΠΎΠΌΠΎΡΡ...
Π ΡΡΠ½ΠΊΡΠΈΠΈ createExcelFile Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ Β«CΒ» Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Ρ ΠΊΠ½ΠΈΠ³Ρ, Π° Π½Π΅ Π² Π΄ΡΡΠ³ΠΈΡ ΡΠ»ΡΡΠ°ΡΡ .
exports.getExcelFile = (req, res, next) => {
const excelFile = {};
Order.findById(req.params.id).then(order => {
excelFile.excelOffFile = "Off_" + order.factory + "_" + order._id + ".xls";
excelFile.excelOffFilePath = path.join("data", "excel", excelFile.excelOffFile);
excelFile.excelFactFile = "Fact_" + order.factory + "_" + order._id + ".xls";
excelFile.excelFactFilePath = path.join("data", "excel", excelFile.excelFactFile);
excelFile.excelBrFile = "Br_" + order.factory + "_" + order._id + ".xls";
excelFile.excelBrFilePath = path.join("data", "excel", excelFile.excelBrFile);
excelFile.excelSuFile = "Su_" + order.factory + "_" + order._id + ".xls";
excelFile.excelSuFilePath = path.join("data", "excel", excelFile.excelSuFile);
let workbookFinal = createExcelFile(order, "C", excelFile.excelOffFilePath);
createExcelFile(order, "F", excelFile.excelFactFilePath);
createExcelFile(order, "B", excelFile.excelBrFilePath);
createExcelFile(order, "S", excelFile.excelSuFilePath);
sgMail.send({
to: config.get("mail.defaultAdd"),
from: defaultMailId,
subject: "Order with excel attachment send through software ",
html: `<h1>
The mail has been sent as trial through program for testing excel file attachement .
</h1>
<h3>
Office file - ${url.format({ protocol: req.protocol, host: req.get("host"), pathname: "orders/genExcelFile/" + excelFile.excelOffFile })}</br>
Fact file - ${url.format({ protocol: req.protocol, host: req.get("host"), pathname: "orders/genExcelFile/" + excelFile.excelFactFile })}</br>
Br file - ${url.format({ protocol: req.protocol, host: req.get("host"), pathname: "orders/genExcelFile/" + excelFile.excelBrFile })}</br>
Su file - ${url.format({ protocol: req.protocol, host: req.get("host"), pathname: "orders/genExcelFile/" + excelFile.excelSuFile })}</br>
</h3>
`,
attachments: [
{
content: fs.readFileSync(path.join(rootDir.rootDir, excelFile.excelOffFilePath), { encoding: "base64" }),
filename: excelFile.excelOffFile,
},
{
content: fs.readFileSync(excelFile.excelFactFilePath, { encoding: "base64" }),
filename: excelFile.excelFactFile,
},
{
content: fs.readFileSync(excelFile.excelBrFilePath, { encoding: "base64" }),
filename: excelFile.excelBrFile,
},
{
content: fs.readFileSync(excelFile.excelSuFilePath, { encoding: "base64" }),
filename: excelFile.excelSuFile,
}
]
}).then(result => {
console.log("mail sent successfully...");
}).catch(err => console.log(err));
res.setHeader("Content-Type", "application/vnd.ms-excel");
res.setHeader("Content-Disposition", "attachment;filename='" + excelFile.excelOffFile + "'");
workbookFinal.xlsx.write(res).then(() => {
res.end();
});
}).catch(err => console.log(err));
};
ΠΡΠΈΠ²Π΅Ρ @ΠΠ»ΠΌΠ΅Ρ
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π²Π°ΡΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΎΠ½ΠΎ ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ ΠΌΠ½Π΅ ΠΏΠΎΠ½ΡΡΡ ΠΏΠΎΡΠΎΠΊ ΠΌΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠ΅Π½Ρ ΠΎΡΠ΅Π½Ρ ΠΎΠ·Π°Π΄Π°ΡΠΈΠ».
Π― ΠΏΠΎΠ½ΡΠ» ΡΠ²ΠΎΡ ΠΎΡΠΈΠ±ΠΊΡ ΠΈ ΡΠ΅ΡΠΈΠ» Π΅Π΅. ΠΠΎΠΉ ΠΊΠΎΠ΄ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π» ΡΠ°ΠΉΠ» excel Π±Π΅Π· Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΠΊ ΠΌΠΎΠΌΠ΅Π½ΡΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΏΠΎΡΡΡ. ΠΡΠ°ΠΊ, Ρ ΡΠ΄Π°Π»ΠΈΠ» ΡΠ²ΠΎΠΉ ΠΏΠΎΡΡΠΎΠ²ΡΠΉ ΠΊΠΎΠ΄ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΡΠΎΠ·Π΄Π°Π» ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, Π° Π·Π°ΡΠ΅ΠΌ Π²ΡΠ·Π²Π°Π» ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΡΠ»Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ getExcelFile. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Ρ Π±ΡΠ» ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ ΡΠ°ΠΉΠ»Ρ Π±ΡΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π½Ρ ΠΈ ΡΠ°ΠΉΠ» Π±ΡΠ» ΠΏΡΠΈΠΊΡΠ΅ΠΏΠ»Π΅Π½ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ.
ΠΡΠ΅ ΡΠ°Π· Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΡΠΎ, ΡΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π»ΠΈ ΠΌΠ½Π΅ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΡΡΡ Π½Π° ΠΌΠΎΠ΅ΠΌ ΠΊΠΎΠ΄Π΅, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°ΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π²ΠΎΠΏΡΠΎΡΡ.
Π‘ Π½Π°ΠΈΠ»ΡΡΡΠΈΠΌΠΈ ΠΏΠΎΠΆΠ΅Π»Π°Π½ΠΈΡΠΌΠΈ,
ΠΡΠ°ΡΡΠ½ ΠΡΠΌΠ°Ρ ΠΠΆΠ°Π»Π°Π½