【前端】读取 xlsx 文件并转化成 json 数据

1、使用 XMLHttpRequest

html 复制代码
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <title>Read Excel with JavaScript</title>
    </head>
    <body>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.17.5/xlsx.full.min.js"></script>
        <script>
            // 创建 XMLHttpRequest
            var xhr = new XMLHttpRequest();

            // 配置请求类型和URL
            xhr.open("GET", "./测试.xlsx", true);
            xhr.responseType = "arraybuffer"; // 重要:设置响应类型为arraybuffer以接收二进制数据

            // 处理请求状态改变
            xhr.onreadystatechange = function () {
                if (xhr.readyState === 4 && xhr.status === 200) {
                    // 当请求成功完成
                    var data = new Uint8Array(xhr.response); // 获取返回的二进制数据

                    // 使用SheetJS解析二进制数据
                    var workbook = XLSX.read(data, { type: "array" });

                    // 读取第一个工作表
                    var firstSheetName = workbook.SheetNames[0];
                    var worksheet = workbook.Sheets[firstSheetName];

                    // 将工作表转换为JSON
                    var jsonData = XLSX.utils.sheet_to_json(worksheet);

                    // 处理JSON数据
                    console.log(jsonData);
                }
            };

            // 发送请求
            xhr.send();
        </script>
    </body>
</html>

2、使用 input

html 复制代码
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <title>Read Excel with JavaScript</title>
    </head>
    <body>
        <input type="file" id="fileInput" />
        <pre id="output"></pre>

        <script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.17.5/xlsx.full.min.js"></script>
        <script>
            // JavaScript 部分在这里
            document
                .getElementById("fileInput")
                .addEventListener("change", handleFile, false);

            function handleFile(event) {
                const file = event.target.files[0];
                const reader = new FileReader();

                reader.onload = function (e) {
                    const data = new Uint8Array(e.target.result);
                    const workbook = XLSX.read(data, { type: "array" });

                    // 获取第一个工作表的名称
                    const firstSheetName = workbook.SheetNames[0];
                    // 获取第一个工作表
                    const worksheet = workbook.Sheets[firstSheetName];

                    // 将工作表内容转换为 JSON 格式
                    const jsonData = XLSX.utils.sheet_to_json(worksheet, {
                        header: 1,
                    });

                    console.log(jsonData);

                };

                reader.readAsArrayBuffer(file);
            }
        </script>
    </body>
</html>
相关推荐
北'辰1 小时前
DeepSeek智能考试系统智能体
前端·后端·架构·开源·github·deepseek
前端历劫之路2 小时前
🔥 1.30 分!我的 JS 库 Mettle.js 杀入全球性能榜,紧追 Vue
前端·javascript·vue.js
爱敲代码的小旗2 小时前
Webpack 5 高性能配置方案
前端·webpack·node.js
Murray的菜鸟笔记3 小时前
【Vue Router】路由模式、懒加载、守卫、权限、缓存
前端·vue router
苏格拉没有底了3 小时前
由频繁创建3D火焰造成的内存泄漏问题
前端
阿彬爱学习3 小时前
大模型在垂直场景的创新应用:搜索、推荐、营销与客服新玩法
前端·javascript·easyui
橙序员小站4 小时前
通过trae开发你的第一个Chrome扩展插件
前端·javascript·后端
Lazy_zheng4 小时前
一文掌握:JavaScript 数组常用方法的手写实现
前端·javascript·面试
是晓晓吖4 小时前
关于Chrome Extension option的一些小事
前端·chrome
MrSkye4 小时前
🔥从菜鸟到高手:彻底搞懂 JavaScript 事件循环只需这一篇(下)
前端·javascript·面试