반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- onsen-ui
- c#
- Vue
- error
- v-text-field height
- onsenui
- nodejs
- electron-nuxt
- naver storage
- xlsx
- naver storage bucket error
- NUXT
- sort
- vuejs
- Electron
- 프로세스 방지
- CSS
- kotlin
- 동일 프로그램
- 동일 프로세스
- JavaScript
- Vuetify
- v-select
- bucket cors
- Android
- f035d
- MySQL
- sequelize
- vuetifyjs
- bucket max-key
Archives
- Today
- Total
앙큼한 개발기록
[vue/nuxt] excel file import file (엑셀 파일 읽기) 본문
nuxt 를 통해서 엑셀 파일을 읽는 방법에 대해서 알아보자.
우선 html <input> file의 onChange 이벤트로 파일 데이터를 가져온다.
<input type="file" text="불러오기" @change="readExcelFile" />
...
data() {
return {
fileReader: null,
sheetNameList: [],
excelDataList: []
}
},
...
readExcelFile(event) {
let input = event.target
let file = input.files[0]
let fileName = file.name
let extension = fileName.split('.')[1]
let includeExtension = ['xlsx', 'csv', 'xls']
if (!includeExtension.includes(extension)) {
alert('엑셀 형식의 파일을 넣어주세요.')
return
}
this.fileReader = new FileReader()
this.fileReader.onload = this.onLoadFile
this.fileReader.readAsBinaryString(file)
event.target.value = ''
},
fileReader를 만들고 해당 reader에 onload 이벤트를 넣어서
파일이 읽히고 난 후 이벤트 처리를 한다.
onLoadFile() {
if (!this.fileReader) return
let data = this.fileReader.result
let workBook = XLSX.read(data, {type: 'binary'})
// set sheet name
this.sheetNameList = workBook.SheetNames
// read sheet
let rowDataList = []
this.sheetNameList.forEach((name, index) => {
let rows = XLSX.utils.sheet_to_json(workBook.Sheets[name])
console.log(rows)
rowDataList[index] = rows
})
this.excelDataList = rowDataList
console.log(this.excelDataList)
}
나는 xlsx의 sheet_to_json 을 사용하여 데이터를 수집하였고
공식 문서의 opt에 보면 [header: 1]로 첫번째 행이 json key 값으로 들어가게 된다.
다른 sheet_to 함수는 다음과 같다.

끝.
Comments