1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
| yarn add xlsx
引入: import * as XLSX from 'xlsx'
核心api
- XLSX.utils.book_new() 新建工作簿 - xlsx.utils.json_to_sheet(json数组)创建一个sheet,然后给该sheet添加数据 - xlsx.utils.aoa_to_sheet(二维数组)创建工作表 数组格式 - xlsx.utils.book_append_sheet: 往工作簿里面添加一个sheet - xlsx.writeFile(工作簿,名称,配置项) 下载生成的excel
实例:
const workBook = xlsx.utils.book_new() const workSheet = xlsx.utils.json_to_sheet([ { id: 1, name: '张三', age: 16 }, { id: 2, name: '李四', age: 18 }, { id: 3, name: '王五', age: 20 } ]) xlsx.utils.book_append_sheet(workBook, workSheet) xlsx.writeFile(workBook, `测试.xlsx`, { bookType: 'xlsx' })
Excel导入 通过Elemenui 有上传可得到二进制流的数据。 const readExecl = (e) => { let file = e.raw const fileReader = new FileReader()
fileReader.readAsBinaryString(file) fileReader.onload = (ev) => {
const data = ev.target.result
const workbook = XLSX.read(data, { type: 'binary', })
const exlname = workbook.SheetNames[0]
const exl = XLSX.utils.sheet_to_json(workbook.Sheets[exlname])
console.log(exl) } }
导入要将文件转为二进制数据 原生JS有个input框的type属性值为file
UI库可直接拿到数据,例如:e.row是转换的数据 1.浏览器可以读取文件了 通过let fileReader = new FilReader() 2.通过fileReader 的 readAsBinryString(e.row) 3.通过读取成功时的函数loud 4.fileReader.loude=(ev)=>{}函数得到一个读取成功后的数据 5.XLSX读取数据 let book =XLSX.read(ev.target.rults,{type:'binary'}) 6.拿到一页数据let sheet= book.SheetName[0] 7.根据sheet的名字拿到对应的内容,通过XLSX.utiles.sheet_to_json拿到转化的数据
|