前端导出excel文件(react)


前端导出excel(安装xlsx)

demo 地址https://sheetjs.com/demo/manifest.html

案列
1. 将页面的table 元素 变成excel文件并下载
import XLSX from "xlsx"
createElsx(){
// 获取表格的dom元素
var elt = document.getElementsByTagName('table')[0];
console.log(elt)
// 将表格的dom 元素转化为 excel工作薄
var wb = XLSX.utils.table_to_book(elt, {sheet:"Sheet JS"});
// 将工作薄导出为excel文件
XLSX.writeFile(wb,'呵呵哒.xlsx');
}

2. 将数据转化为数组 进行导出
import XLSX from "xlsx"
createElsx(){
let arr =[
["序号",'姓名','年纪'],
["0",'呵呵哒','15'],
["1",'12313','15'],
]
// 将数组转化为标签页
var ws = XLSX.utils.aoa_to_sheet(arr);
// 创建工作薄
var wb = XLSX.utils.book_new()
// 将标签页插入到工作薄里
XLSX.utils.book_append_sheet(wb,ws)
// 将工作薄导出为excel文件
XLSX.writeFile(wb,'呵呵哒.xlsx');
}

3.如果excel数据非常大
后端将数据变成excel 前端直接下载这个文件

a.后端产生excel

let sheet =XLSX.utils.aoa_to_sheet(arr)
let book = XLSX.utils.book_new()
XLSX.utils.book_append_sheet(book,sheet)
XLSX.writeFile(book,'hehe.xlsx')

// 返回数据的接口
app.get('/getelsx',(req,res)=>{
let file = fs.readFileSync('./hehe.xlsx')
// 让文件作为附件的形式下载
res.attachment('商品.xlsx')
res.send(file)
})
app.listen(3000,()=>{
console.log("server start")
})

b.前端进行下载

<button onclick='download()'>open下载</button>
<iframe name='myFrame' style="display:none;"></iframe>
<script>
function download(){
window.open('http://localhost:3000/getelsx','myFrame')
}
</script>
注意:通过iframe可以不让浏览器闪一下


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM