1
1
import XLSX from 'xlsx'
2
2
import FileSaver from 'file-saver'
3
- export function excelToJson ( rawFile , keysOption ) {
4
- let reader = new FileReader ( )
5
- reader . onload = function ( e ) {
6
- let data = e . target . result
7
- let workbook = XLSX . read ( data , { type : 'binary' } )
8
- let unitSheet = [ ] // a one dimensional array, only includes the data in one sheet
9
- let totalSheet = [ ] // a two dimensional array, includes the data in all sheets
10
- let arrySheet = [ ] // a one dimensional array, includes the data in all sheets
11
- Object . keys ( workbook . Sheets ) . forEach ( key => {
12
- unitSheet = XLSX . utils . sheet_to_json ( workbook . Sheets [ key ] , { header : keysOption } )
13
- keysOption && unitSheet . splice ( 0 , 1 ) // splice the first item bcz we don't need it, it's a label, you can redefine it by keysOption
14
- totalSheet . push ( unitSheet )
3
+ export function excelToJson ( rawFile ) {
4
+ let reader = new FileReader ( ) ;
5
+ let jsonArr = [ ]
6
+ reader . onload = function ( e ) {
7
+ let data = e . target . result ;
8
+ let workbook = XLSX . read ( data , {
9
+ type : 'binary'
10
+ } ) ;
11
+ let sheets = workbook . Sheets
12
+ Object . keys ( sheets ) . forEach ( key => {
13
+ let unitJson = XLSX . utils . sheet_to_json ( sheets [ key ] )
14
+ unitJson . forEach ( item => {
15
+ jsonArr . push ( item )
16
+ } )
15
17
} )
16
- totalSheet . map ( arr1 => arr1 . map ( arr2 => arrySheet . push ( arr2 ) ) ) // generate a one dimensional array for back-end
17
- console . log ( arrySheet )
18
- return arrySheet
19
- }
20
- reader . readAsBinaryString ( rawFile )
18
+ } ;
19
+ reader . readAsBinaryString ( rawFile ) ;
20
+ return jsonArr
21
21
}
22
22
23
23
export function tableToExcel ( table , name = 'table' ) {
@@ -37,4 +37,4 @@ export function tableToExcel(table, name = 'table') {
37
37
}
38
38
}
39
39
return documents
40
- }
40
+ }
0 commit comments