使用xlsx导入excel文件

原文地址https://qxiaomay.github.io/2018/07/13/vue%E5%89%8D%E7%AB%AF%E5%AF%BC%E5%85%A5%E5%B9%B6%E8%A7%A3%E6%9E%90excel%E8%A1%A8%E6%A0%BC%E6%93%8D%E4%BD%9C%E6%8C%87%E5%8D%97/

  • 安装xlsx插件

    // 安装插件
    npm install xlsx --save
    
    // 在vue中导入XLSX
    import XLSX from 'xlsx'

     

  • 这里使用 element-ui 的上传组件
    关闭默认上传的操作,在on-change事件上绑定importExcel上传函数
    如果用传统的input上传组件也可以<input type="file" @change="importExcel($event.target)" />

    <el-upload
        ref="upload"
        action="/"
        :show-file-list="false"
        :on-change="importExcel"
        :auto-upload="false">
        <el-button
            slot="trigger"
            icon="el-icon-upload"
            size="small"
            type="primary">
            上传文件
        </el-button>
    </el-upload>
    

     

  • 上传文件的方法importExce

     

importExcel(file) {
// let file = file.files[0] // 使用传统的input方法需要加上这一步
const types = file.name.split('.')[1]
const fileType = ['xlsx', 'xlc', 'xlm', 'xls', 'xlt', 'xlw', 'csv'].some(item => item === types)
if (!fileType) {
alert('格式错误!请重新选择')
return
}
this.file2Xce(file).then(tabJson => {
if (tabJson && tabJson.length > 0) {
this.xlsxJson = tabJson
// xlsxJson就是解析出来的json数据,数据格式如下
// [
// {
// sheetName: sheet1
// sheet: sheetData
// }
// ]
}
})
},
file2Xce(file) {
return new Promise(function(resolve, reject) {
const reader = new FileReader()
reader.onload = function(e) {
const data = e.target.result
this.wb = XLSX.read(data, {
type: 'binary'
})
const result = []
this.wb.SheetNames.forEach((sheetName) => {
result.push({
sheetName: sheetName,
sheet: XLSX.utils.sheet_to_json(this.wb.Sheets[sheetName])
})
})
resolve(result)
}
reader.readAsBinaryString(file.raw)
// reader.readAsBinaryString(file) // 传统input方法
})
}

 

以下是使用xlsx导入ExcelVue代码: 1. 安装xlsx ``` npm install xlsx --save ``` 2. 在Vue组件中引入xlsx ```js import XLSX from 'xlsx'; ``` 3. 编写导入Excel的方法 ```js export default { data() { return { excelData: [], // 存储导入Excel数据 }; }, methods: { handleImportExcel(file) { /* 获取上传的文件对象 */ const { files } = file.target; /* 如果没有上传文件,直接返回 */ if (!files.length) { return; } /* 使用FileReader对象读取Excel文件 */ const reader = new FileReader(); reader.onload = (event) => { /* 读取到的数据 */ const data = event.target.result; /* 通过xlsx将数据转换为数组 */ const workbook = XLSX.read(data, { type: 'binary' }); /* 获取Excel中第一个Sheet名称 */ const sheetName = workbook.SheetNames[0]; /* 根据Sheet名称获取Sheet */ const sheet = workbook.Sheets[sheetName]; /* 将Sheet中的数据转换为数组 */ const excelData = XLSX.utils.sheet_to_json(sheet, { header: 1 }); /* 将excelData存储到data中 */ this.excelData = excelData; }; /* 以二进制方式读取文件 */ reader.readAsBinaryString(files[0]); }, }, }; ``` 4. 在模板中添加上传Excel的表单 ```html <template> <div> <input type="file" @change="handleImportExcel" /> <table> <thead> <tr> <th v-for="(item, index) in excelData[0]" :key="index">{{ item }}</th> </tr> </thead> <tbody> <tr v-for="(item, index) in excelData.slice(1)" :key="index"> <td v-for="(cell, i) in item" :key="i">{{ cell }}</td> </tr> </tbody> </table> </div> </template> ``` 以上就是使用xlsx导入ExcelVue代码,希望对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值