react前端解析xlsx或nodeJS后端解析xlsx

tech2024-03-15  72

前端解析xlsx

需要 js-xlsx

/***关键代码 react**/ import * as XLSX from 'xlsx'; /**读取被选中的 xlsx */ let onChoiceFile = (file, row) => { let data = []; //保存转换后的数据 // 通过FileReader对象读取文件 const fileReader = new FileReader(); fileReader.readAsBinaryString(file); //转换二进制 fileReader.onload = event => { //添加加载完成事件 try { const { result } = event.target; // 转为表格对象 const workbook = XLSX.read(result, { type: 'binary' }); // 遍历sheet for (const sheet in workbook.Sheets) { if (workbook.Sheets.hasOwnProperty(sheet)) { // sheet 转成 array ,{ header: 1 }为每一行数据就是一个string数组 去掉则会返回把第一行对应位置为KEY 当前行为VALUE 的JSON数组 ,配置其它表头可以点进去看具体配置 data = data.concat(XLSX.utils.sheet_to_json(workbook.Sheets[sheet], { header: 1 })); break; // 需要遍历所有sheet就把 break 注释掉 } } Modal.confirm({ title: '群发短信确认', content: '确定要使用 ' + row.title + ' 短信模板群发吗', okText: '确认', cancelText: '取消', onOk: () => { dispatch({ type: 'smsManagementData/sendmsg', payload: { tempId: row.id, data: JSON.stringify(data), projectId: getProjectId() }, callback: (res) => { if (res.status) { message.success('群发信息提交成功'); } else { message.error('群发信息提交失败'); } }, }); }, }) console.log(data); } catch (e) { // 这里可以抛出文件类型错误不正确的相关提示 console.log(e); message.error('文件类型不正确'); return; } }; return false } /*** antd 的 upload**/ return <Upload accept="file" beforeUpload={(file) => { onChoiceFile(file, row) }} showUploadList={false}//不显示进度条 > <Button style={{ margin: "5px" }} icon={<MessageOutlined />} shape="circle" type="primary" /> </Upload>

后端解析xlsx

需要 node-xlsx

/***关键代码 nodeJS koa2 **/ const xlsx = require('node-xlsx'); let cacheExcl = async (ctx, next) => { let url = ctx.url; let request = ctx.request; let req_query = request.query; let req_queryString = request.queryString; let req_body = request.body; let xlsxData = []; await new Promise((resolve, reject) => { //解析xlsx xlsxData = xlsx.parse(request.files.file.path);//xlsx.parse 传参为 文件流或者地址 获得的结果为 [string[],string[],string[]] string[]为一行数据 resolve(xlsxData); }) try { for (let i = 0; i < xlsxData[0].data.length; i++) { if (i != 0) { await sqlModel.addPartner(xlsxData[0].data[i]) } } ctx.body = { code: 0, data: req_body, status: true, success: true } } catch (e) { ctx.body = { code: -1, err: JSON.stringify(e), status: false, success: false } } }
最新回复(0)