Webpack使用sheet.js解析字符串化的XLSX文件

问题陈述

我在我的React应用程序中使用一个现有的* .xlsx文件,并将其与sheet.js/xlsx.js解析为一个JS对象。


直到现在我会

  1. 使用Webpack file-loader在运行时导入文件的公共路径
  2. 获取文件
  3. 使用sheet.js解析文件
// getTemplateWorkbook.js*
import XLSX from '@sheet/core'

async function getTemplateWorkbook(uri): Promise<XLSX.WorkBook> {
    const req = new XMLHttpRequest();
    req.open("GET",uri,true);
    req.responseType = "arraybuffer";

    return new Promise((resolve,reject) => {
        req.onload = () =>  {
            const data = new Uint8Array(req.response);
            const workbook = XLSX.read(data,{type:"array",cellStyles: true });
            resolve(workbook)
        }
        req.onerror = error => console.log(`Error getting XLSX template`,error);
        req.send();
    })
};


我要

  1. 使用Webpack raw-loader
  2. 将原始文件作为字符串导入
  3. 使用sheet.js解析文件


详细信息

原始文件看起来像这样(缩短):

 PK     ! ???  -   [Content_Types].xml ¢(                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  E?1?÷?¾?q¢.J)?.l»*­Pû iru??$?o???A?&¹?$g0ZW&[A@?zy?e`¥S?ö9}?£°Jg¡`@6?¦?Qµl?1úG??P ?K+3*i?¹s?÷?Kg#??µ?`&?&f?ú½% `e??`»£¥?D?Výr?rªL{°?????»ºwjM?²???Á?»°ørn??9A?-A9¹¬¨9ú Ba    +?§1¯?¶{?i3??©??/?? V?Wm?gmw?¡9???"?b?À¶?mr.E õn??R9.????z??¼¸`?_uuU?¨?§???õ??¨??ý??ÿÿ PK     ! µU0#??L   _rels/.rels ¢(                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  ¬?MO?????BKwAH»!T~?I?µ£$?'T?G½~ü???ö??;#¶w­??úqu*&r?Fq¬?v???GJy(v½*«¸¨¡K?#F?D±?W  ¥?=?Z?Y?ø®?S?°·7 ???¦??9L??bg?|?!õùUSh9i°b?r:"y_dlÀ??ý|-N??"4ø2?g õZ´4??k ??¨?  ÿÿ PK     ! ?5?  ù     xl/workbook.xml¬Umo?þ> ÿA
tû H?%Rb¶eoº!Hº?E[\$R%©??¾#?(??Mùø???o??©??®C99?û÷û©?¥1?)8?T¹o¯~ºX y'L \õ??}E
Zau&j?e!d?5?r?R?«?R]?~?_a?!???#4¤©(??¤%?_¬V[´?<®²¾©="ª ????¤³%??OZ·
`·7Á?U#R(±? ?OüG??1xR?ÀLw¬d??+?¡OH?%??-??l?????\?L?®Sb¥'9??`???W²©G
+a5D½ ¹þ`'??j*9?,¸©m¨ÿ¨¬,ö¸ b?j?¤P; !pFLR|§.±.?F?}w??)þ¥D«ùõm?3®%??-¹|®$??0ºR??I?Á8?rH?h¸?z?KZ H<?¬º:6?ývj~ m|ZG?nLLl}?g?ÿ??


到目前为止,我试图复制XMLHttpRequest行为没有成功。

  • ArrayBuffer构造函数仅将长度作为参数
  • Uint8Array.from(rawTemplate)返回一个Uint8Array,但xlsx对象为空。
  • 新的TextEncoder()。encode(rawTemplate);通过xlsx.js解析时抛出:
    jszip.js:274 Uncaught Error: End of data reached (data length = 53048,asked index = 82673). Corrupted zip ?


如何复制XMLHttpRequest行为?

guxiaoke0510 回答:Webpack使用sheet.js解析字符串化的XLSX文件

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2994500.html

大家都在问