在 Typescript 中,执行时出现错误“无法读取未定义的属性‘替换’”:
const xlsx = XLSX.readFile(fileName);
文件名是现有文件的路径;我读过“ readFile仅在服务器环境中可用。浏览器没有用于读取给定路径的任意文件的 API,因此必须使用另一种策略。” 我能怎么做?
编辑:我要读取的文件是 xlsx;它被压缩了:图书馆有错误吗?我正在运行 xlsx@0.15.1
在 Typescript 中,执行时出现错误“无法读取未定义的属性‘替换’”:
const xlsx = XLSX.readFile(fileName);
文件名是现有文件的路径;我读过“ readFile仅在服务器环境中可用。浏览器没有用于读取给定路径的任意文件的 API,因此必须使用另一种策略。” 我能怎么做?
编辑:我要读取的文件是 xlsx;它被压缩了:图书馆有错误吗?我正在运行 xlsx@0.15.1
因此,基本上您需要将文件放在某个服务器(本地或远程)上,然后获取并读取它XLSX.read(data, options)
fetch('http://localhost:8080/public/filename.ext')
.then(response => response.arrayBuffer())
.then(buffer => {
const xlsx = XLSX.read(new Uint8Array(data, {type: 'array'}));
// process data here
...
})
.catch(err => console.error(err));
另一种方式,如果您不想在服务器上托管您的文件,您可以尝试FileReader API,这有点复杂。
您可以在本文中阅读有关 FileReader 和 File 的信息:“使用 File API 在 JavaScript 中读取文件”
用xlsx读取文件既简单又灵活,可以将数据存储在db或json文件中,以便以后渲染数据
<input
type="file"
onChange={e => {
const file = e.target.files[0]
readExcel(file)
}}
/>
现在在上传文件时读取文件
const readExcel = async (file: any) => {
const fileReader = await new FileReader()
fileReader.readAsArrayBuffer(file)
fileReader.onload = (e: any) => {
const bufferArray = e?.target.result
const wb = XLSX.read(bufferArray, { type: "buffer" })
const wsname = wb.SheetNames[0]
const ws = wb.Sheets[wsname]
const data = XLSX.utils.sheet_to_json(ws)
const fileName = file.name.split(".")[0]
console.log(data)
}