使用XLSX获取EXCEL文件内容
现在我们需要将files转化成我们熟悉的数组类型。 我们使用XLSX.read()方法。
// FileReader共有4种读取方法:
// 1.readAsArrayBuffer(file):将文件读取为ArrayBuffer。
// 2.readAsBinaryString(file):将文件读取为二进制字符串
// 3.readAsDataURL(file):将文件读取为Data URL
// 4.readAsText(file, [encoding]):将文件读取为文本,encoding缺省值为'UTF-8'
const transFile = async (file: File, sheetName: string, parser: any) => {
//获取文件的arrayBuffer
const buffer = await file.arrayBuffer()
//XLSX读取文件的方式 种类为arrayBuffer
const workbook: any = XLSX.read(buffer, { type: 'buffer' })
//传入sheet名字 并获取对应的sheet 这里是只有一表
const sheet = workbook.Sheets[sheetName]
const json: any = XLSX.utils.sheet_to_json(sheet, {
header: 1,
defval: '',
})
if (!sheet) return undefined
sheet['!merges']?.forEach((merge: any) => {
const column = merge.s.c
const start = merge.s.r
const end = merge.e.r
const value = json[start][column]
for (let i = start + 1; i <= end; i++) {
json[i][column] = value
}
})
//产生文本json 并自定义parser的方法
return parser(json)
}