使用SheetJS实现Excel表格转Json

使用SheetJS读取Excel表格数据,转成Json格式。

官方地址

github: https://github.com/SheetJS/sheetjs

官网: https://sheetjs.com

预览Demo: https://oss.sheetjs.com/sheetjs/

使用

1
yarn add xlsx
1
import XLSX from 'xlsx'

Excel转Json

读取文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// ... 上传文件,只允许上传 xlsx/xls/csv格式的文件

const reader = new FileReader()

if (isCSV) {
reader.onload = (e) => {
const content = e.target.result
const workbook = XLSX.read(content, { type: 'string' })
const parsedData = parseSheetData(workbook)
// ...
}
reader.onerror = onReadError
reader.readAsText(file)
} else {
reader.onload = (e) => {
const data = new Uint8Array(e.target.result)
const workbook = XLSX.read(data, { type: 'array' })
const parsedData = parseSheetData(workbook)
// ...
}
reader.onerror = onReadError
reader.readAsArrayBuffer(file)
}

XLSX.utils.sheet_to_json

1
2
3
4
5
6
7
8
9
10
11
// blankrows必须设置为false才能跳过空白行

// 只获取第一个Sheet的数据
const parseSheetData = (workbook) => {
if (workbook && workbook.SheetNames && workbook.SheetNames.length) {
return XLSX.utils.sheet_to_json(workbook.Sheets[workbook.SheetNames[0]], {
blankRows: false, // 跳过空白行
})
}
return []
}

其他

xls格式的表最多只能有65,536行,多于该行数的数据源会被省略。

xlsx的上限是1,048,576行。

csv是纯文本格式,理论上无最大行数限制,只可能受限于打开工具。