// 代碼示例
const xlsx = require('node-xlsx')
async createExcel(ctx) {
const postData = ctx.request.body;
const { data, fileName, start_day, end_day, screenName } = postData;
const sheetTitMap = {
'status_type': ['來源', 15],
'title': ['帖子標(biāo)題', 50],
'text': ['帖子正文', 50],
'created_at': ['帖子日期', 20],
'user': ['發(fā)帖賬號(hào)', 20],
'retweet_count': ['轉(zhuǎn)發(fā)', 10],
'reply_count': ['評(píng)論', 10],
'like_count': ['點(diǎn)贊', 15],
'fav_count': ['收藏', 10],
}
const sheetTit = exportField.map(item => {
return sheetTitMap[item]
})
let temp = JSON.parse(JSON.stringify(data));
const worksheets = [
{
name: '表格1', //表哥標(biāo)題
data: [
[`${screenName}簡報(bào) ${start_day}-${end_day})`], //第一行數(shù)據(jù)
[`報(bào)告生成時(shí)間 ${moment().format('YYYY年MM月DD日 HH:mm:ss')}`], //第二行數(shù)據(jù)
['簡介'], // //第三行數(shù)據(jù)
sheetTit.map(item => item[0]), ...temp],// 以后的數(shù)據(jù)包括字段標(biāo)題及真實(shí)數(shù)據(jù)
options: { // 表格配置項(xiàng)
"!cols": sheetTit.map(item => ({ wch: item[1] })), // 設(shè)置表格寬度
'!merges': [ // 合并前三行單元格
{ s: { c: 0, r: 0 }, e: { c: temp.length - 1, r: 0 } },
{ s: { c: 0, r: 1 }, e: { c: temp.length - 1, r: 1 } },
{ s: { c: 0, r: 2 }, e: { c: temp.length - 1, r: 2 } }
],
}
}
];
const res = xlsx.build(worksheets); // 生成表格數(shù)據(jù)
const upStream = fs.createWriteStream(fileName + '.xlsx'); // 寫入表格數(shù)據(jù)
upStream.write(res);
upStream.end();
upStream.on('close', () => {
console.log('寫入的文件路徑是' + upStream.path)
})
ctx.body = { // 返回
result_code: 0,
url: upStream.path,
state: 'success',
};
}
async downloadFild(ctx) { // 下載并刪除原文件
const fileName = ctx.query.path;
console.log(fileName)
ctx.attachment(fileName);
await send(ctx, fileName);
setTimeout(() => {
// 刪除文件
fs.unlink(fileName, (err) => {
console.log('文件已被刪除');
});
}, 15000);
}
前端生成Excel解決方案
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- [TOC] 問題背景 開發(fā)新的前端項(xiàng)目時(shí),總少不了搭建開發(fā)環(huán)境和執(zhí)行npm install安裝依賴包,但npm i...
- 傳送門 先放一些我認(rèn)為非常優(yōu)秀的參考文檔,作為傳送門集合,方便大家查看吧: 【1】Node.js中如何利用xlsx...
- 本篇主要分享什么內(nèi)容: 常用的文檔/靜態(tài)站點(diǎn)生成工具有哪些 每個(gè)工具有什么特點(diǎn) 工具適應(yīng)場(chǎng)景 前置概念 MarkD...
- react-native-localization What it doesI just needed a dea...
- 近日收到一個(gè)任務(wù),使用程序自動(dòng)生成考勤報(bào)表,條件是單元格格式必須與模板完全一致,行高、列寬,字體樣式等,于是就嘗試...