如何将传入的Excel文件转换为Ionic 6中的JSON

发布于 2025-01-28 06:26:01 字数 678 浏览 4 评论 0原文

我正在使用XLSX库将输入Excel文件转换为JSON,并且它可以正常工作,但是当我在Android上测试时,它不会触发读取器函数。请向我建议要使用Android的正确库,或者需要更改

const reader: FileReader = new FileReader();
  reader.readAsBinaryString(file);
  reader.onload = (e: any) => {
    console.log(e)
    const binarystr: string = e.target.result;
    const wb: XLSX.WorkBook = XLSX.read(binarystr, { type: 'binary' });

    const wsname: string = wb.SheetNames[0];
    const ws: XLSX.WorkSheet = wb.Sheets[wsname];

    const data = XLSX.utils.sheet_to_json(ws);
    console.log(data);
    this.fileData = data;
  };

它的内容不打印console.log(e),我尝试了try-catch来捕获错误,但是它也没有发现错误。请让我知道问题是什么,哪个库最适合Android以及iOS

I am using xlsx library to convert input excel file into JSON and it works fine but when I test on android it won't trigger reader.onload function. Please suggest to me what's the correct library to use for android or what to need to change

const reader: FileReader = new FileReader();
  reader.readAsBinaryString(file);
  reader.onload = (e: any) => {
    console.log(e)
    const binarystr: string = e.target.result;
    const wb: XLSX.WorkBook = XLSX.read(binarystr, { type: 'binary' });

    const wsname: string = wb.SheetNames[0];
    const ws: XLSX.WorkSheet = wb.Sheets[wsname];

    const data = XLSX.utils.sheet_to_json(ws);
    console.log(data);
    this.fileData = data;
  };

It doesn't print console.log(e), I've tried try-catch to catch the error but it didn't catch the error as well. Please let me know what's the issue and which library is best for Android as well as IOS

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

诠释孤独 2025-02-04 06:26:01

我解决了。请参阅下面的代码,希望它能帮助某人

  incomingfile(event){
     this.file= event.target.files[0];
     this.readXLSX(this.file);
  }

  readXLSX(file){
     let fileReader = this.getFileReader(file);
     fileReader.onload = (e: any) => {
     /* create workbook */
     const binarystr: string = e.target.result;
     const wb: XLSX.WorkBook = XLSX.read(binarystr, { type: 'binary' });

     /* selected the first sheet */
     const wsname: string = wb.SheetNames[0];
     const ws: XLSX.WorkSheet = wb.Sheets[wsname];

     /* save data */
     const data = XLSX.utils.sheet_to_json(ws); // to get 2d array pass 2nd parameter as object {header: 1}
     console.log(data); // Data will be logged in array format containing objects
     this.zone.run(() => {
       this.fileData = data;
     });
   };
 }

  getFileReader(file): FileReader {
    const fileReader = new FileReader();
    fileReader.readAsBinaryString(file);
    const zoneOriginalInstance = (fileReader as any)["__zone_symbol__originalInstance"];
    return zoneOriginalInstance || fileReader;
 }

I solved it. Please see the code below, hope it will help someone

  incomingfile(event){
     this.file= event.target.files[0];
     this.readXLSX(this.file);
  }

  readXLSX(file){
     let fileReader = this.getFileReader(file);
     fileReader.onload = (e: any) => {
     /* create workbook */
     const binarystr: string = e.target.result;
     const wb: XLSX.WorkBook = XLSX.read(binarystr, { type: 'binary' });

     /* selected the first sheet */
     const wsname: string = wb.SheetNames[0];
     const ws: XLSX.WorkSheet = wb.Sheets[wsname];

     /* save data */
     const data = XLSX.utils.sheet_to_json(ws); // to get 2d array pass 2nd parameter as object {header: 1}
     console.log(data); // Data will be logged in array format containing objects
     this.zone.run(() => {
       this.fileData = data;
     });
   };
 }

  getFileReader(file): FileReader {
    const fileReader = new FileReader();
    fileReader.readAsBinaryString(file);
    const zoneOriginalInstance = (fileReader as any)["__zone_symbol__originalInstance"];
    return zoneOriginalInstance || fileReader;
 }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文