npm i @uublue/vue-excel-viewer
| name |
type |
default |
description |
| height |
Number |
500 |
the height of excel viewer |
| firstRowIndex |
Number |
1 |
第一行数据的行序号 |
| minColCounts |
Number |
- |
列的最小显示个数 |
import VueExcelViewer from '@uublue/vue-excel-viewer'
import '@uublue/vue-excel-viewer/lib/vue-excel-viewer.css'
Vue.use(VueExcelViewer)
<template>
<div id="app">
<input @change="chooseFile" type="file"/>
<excel-viewer
ref="excelViewer"
:height="300"
:first-row-num="firstRowNum"
:min-col-counts="5"
@on-reach-top="reachTop"
@on-reach-bottom="reachBottom"
@on-row-select="onRowSelect"
@on-col-select="onColSelect"
@on-cell-select="onCellSelect"
@on-before-open="beforeOpen"
@on-after-open="afterOpen"
/>
</div>
</template>
<script>
export default {
name: "App",
data() {
return {
firstRowNum: 2
};
},
methods: {
chooseFile(e){
console.info("excel file select", e);
this.$refs.excelViewer.openExcelFile(e.target.files[0]);
},
beforeOpen() {
console.info("excel before open");
},
afterOpen() {
console.info("excel after open");
this.$refs.excelViewer.setRowBackgroundColor(5,'red');
},
onRowSelect(rowNum, selectRowValues) {
console.info("row select", rowNum, selectRowValues);
this.$refs.excelViewer.setSelectedBackgroundColor('red');
},
onColSelect(colNum) {
console.info("col select", colNum);
},
onCellSelect(rowNum, colNum, value) {
this.$refs.excelViewer.setCellBackgroundColor(rowNum, colNum, 'red');
this.$refs.excelViewer.freezeCellAt(rowNum, colNum);
if (value) {
console.info("cell select", rowNum, colNum, value);
} else {
console.info("cell select, value empty", rowNum, colNum);
}
},
reachTop() {
console.info("touch top");
},
reachBottom() {
console.info("touch bottom");
}
},
};
</script>
axios
.get(`/file`, {
responseType: "blob",
})
.then((res) => {
let blob = res.data;
let reader = new FileReader();
var self = this
reader.onload = (e) => {
self.$refs.excelView.openExcelData(e.target.result)
};
reader.readAsBinaryString(blob);
})
.catch((error) => {
console.error("error", error);
});