ITPub博客

首页 > 应用开发 > Javascript > 增强版 JavaScript 读取 Excel

增强版 JavaScript 读取 Excel

Javascript 作者:gaozhiyong 时间:2026-03-18 21:24:27 0 删除 编辑

功能: 限制只能选 Excel、解析表头、过滤空行、返回干净数组、错误提示,直接复制就能用。

html

预览

<input type="file" id="fileInput" accept=".xlsx,.xls" /> <script src="https://cdn.jsdelivr.net/npm/xlsx@0.18.5/dist/xlsx.full.min.js"></script> <script> const fileInput = document.getElementById('fileInput'); fileInput.addEventListener('change', async function (e) {    const file = e.target.files[0];    if (!file) return;    // 1. 校验文件格式    const suffix = file.name.slice(-5).toLowerCase();    if (!suffix.includes('.xlsx') && !suffix.includes('.xls')) {        alert('请上传 xlsx 或 xls 格式的Excel文件');        fileInput.value = '';        return;    }    // 2. 读取文件    const reader = new FileReader();    reader.readAsArrayBuffer(file);    reader.onload = function (ev) {        try {            // 解析Excel            const data = new Uint8Array(ev.target.result);            const workbook = XLSX.read(data, { type: 'array' });                        // 获取第一个工作表            const firstSheet = workbook.SheetNames[0];            const sheet = workbook.Sheets[firstSheet];            // 3. 转JSON并自动识别表头            let list = XLSX.utils.sheet_to_json(sheet, {                header: 1   // 第一行作为表头            });            // 4. 过滤空行、空数据            list = filterEmptyRow(list);            console.log('解析后Excel数据:', list);            // 在这里可以渲染表格、传给后端等        } catch (err) {            alert('文件解析失败,请检查Excel格式');            console.error(err);        }    }    reader.onerror = function () {        alert('文件读取失败');    } }); // 过滤空行工具方法 function filterEmptyRow(arr) {    return arr.filter(row => {        // 去掉整行都是空的        return row.some(item => item !== undefined && item !== '');    }); } </script>

增强功能亮点

  1. 限制只能上传 .xlsx/.xls,拦截其他文件
  2. 异常捕获,解析失败有弹窗提示
  3. 自动 以第一行为表头解析
  4. 自动 过滤空白行、无效空数据
  5. 兼容所有现代浏览器,无需后端

拿到的数据格式示例

js

[  ["姓名","年龄","性别"],  ["张三",20,"男"],  ["李四",22,"女"] ]

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70050124/viewspace-3118009/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2022-05-15

  • 博文量
    7
  • 访问量
    7607