前端解析Excel

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 先写一个文件提交<input type="file" id="excel-file">导入xlsx.core.min.js<script type="text/javascript" src="xlsx.
  • 先写一个文件提交

    <input type="file" id="excel-file">
  • 导入xlsx.core.min.js

    <script type="text/javascript" src="xlsx.core.min.js"></script>
  • 解析excel

    <script>
        $('#excel-file').change(function (e) {
    var files = e.target.files;
    var fileReader = new FileReader();
    fileReader.onload = function (ev) {
    try {
        var data = ev.target.result,
            workbook = XLSX.read(data, {
                type: 'binary'
            }), // 以二进制流方式读取得到整份excel表格对象
            persons = []; // 存储获取到的数据
    } catch (e) {
        console.log('文件类型不正确');
        return;
    }
    // 遍历每张表读取
    for (var sheet in workbook.Sheets) {
        if (workbook.Sheets.hasOwnProperty(sheet)) {
            var fromTo = workbook.Sheets[sheet]['!ref'];
            console.log(fromTo);
            var datas = workbook.Sheets[sheet];
            
            // 如果有不规范数据可以在这里进行处理datas
            
            persons = persons.concat(XLSX.utils.sheet_to_json(datas));
            break; // 只读了第一张表
        }
    }
       console.log(persons);
    };
    // 以二进制方式打开文件
    fileReader.readAsBinaryString(files[0]);
        });
    </script>
  • 全部代码

    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
    </head>
    <body>
    <input type="file" id="excel-file">
    </body>
    <script type="text/javascript" src="xlsx.core.min.js"></script>
    <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
    <script>
        $('#excel-file').change(function (e) {
    var files = e.target.files;
    var fileReader = new FileReader();
    fileReader.onload = function (ev) {
    try {
        var data = ev.target.result,
            workbook = XLSX.read(data, {
                type: 'binary'
            }), // 以二进制流方式读取得到整份excel表格对象
            persons = []; // 存储获取到的数据
    } catch (e) {
        console.log('文件类型不正确');
        return;
    }
    
    // 遍历每张表读取
    for (var sheet in workbook.Sheets) {
        if (workbook.Sheets.hasOwnProperty(sheet)) {
            var fromTo = workbook.Sheets[sheet]['!ref'];
            console.log(fromTo);
            var datas = workbook.Sheets[sheet];
            console.log(datas);
            // 处理不规范的数据
            for (var nums in datas) {
                console.log(nums);
                var num = nums.replace(/[^0-9]/ig, "");
                console.log(num);
                var row_data = new Array();
                row_data[0] = "A" + String(num);
                row_data[1] = "B" + String(num);
                row_data[2] = "C" + String(num);
                row_data[3] = "D" + String(num);
                row_data[4] = "E" + String(num);
                row_data[5] = "F" + String(num);
                row_data[6] = "G" + String(num);
                row_data[7] = "H" + String(num);
                row_data[8] = "I" + String(num);
                row_data[9] = "J" + String(num);
                row_data[10] = "K" + String(num);
                row_data[11] = "L" + String(num);
                row_data[12] = "M" + String(num);
                
                var arry_row = new Array();
                var count = 0;
                for (var i of row_data) {
                    if (datas[i]) {
                        arry_row[count] = datas[i].v.replace(/\s*/g,"");
                        count += 1;
                    }
                }
                // 找到正确数据的列名
                if (arry_row.indexOf("单位") < 0 || arry_row.indexOf("数量") < 0) {
                    for (var i = 0; i < row_data.length; i++) {
                        delete datas[row_data[i]];
                    }
                }
                else {
                    // 修改读取范围
                    datas["!ref"] = row_data[0] + ":" + datas['!ref'].split(':')[1];
                    break;
                }
    
            }
            persons = persons.concat(XLSX.utils.sheet_to_json(datas));
            break; // 只读了第一张表
        }
    }
    console.log(persons);
    };
    // 以二进制方式打开文件
    fileReader.readAsBinaryString(files[0]);
        });
    </script>
    
    </html>

对前端不怎么熟悉,代码比较乱,仅供参考

本文链接:时光不写博客-前端解析Excel:xlsx.core.min.js

相关文章
|
1天前
|
编解码 前端开发 UED
探索无界:前端开发中的响应式设计深度解析与实践####
【10月更文挑战第29天】 本文深入探讨了响应式设计的核心理念,即通过灵活的布局、媒体查询及弹性图片等技术手段,使网站能够在不同设备上提供一致且优质的用户体验。不同于传统摘要概述,本文将以一次具体项目实践为引,逐步剖析响应式设计的关键技术点,分享实战经验与避坑指南,旨在为前端开发者提供一套实用的响应式设计方法论。 ####
20 4
|
11天前
|
缓存 前端开发 JavaScript
"面试通关秘籍:深度解析浏览器面试必考问题,从重绘回流到事件委托,让你一举拿下前端 Offer!"
【10月更文挑战第23天】在前端开发面试中,浏览器相关知识是必考内容。本文总结了四个常见问题:浏览器渲染机制、重绘与回流、性能优化及事件委托。通过具体示例和对比分析,帮助求职者更好地理解和准备面试。掌握这些知识点,有助于提升面试表现和实际工作能力。
42 1
|
11天前
|
前端开发 JavaScript 开发者
揭秘前端高手的秘密武器:深度解析递归组件与动态组件的奥妙,让你代码效率翻倍!
【10月更文挑战第23天】在Web开发中,组件化已成为主流。本文深入探讨了递归组件与动态组件的概念、应用及实现方式。递归组件通过在组件内部调用自身,适用于处理层级结构数据,如菜单和树形控件。动态组件则根据数据变化动态切换组件显示,适用于不同业务逻辑下的组件展示。通过示例,展示了这两种组件的实现方法及其在实际开发中的应用价值。
19 1
|
15天前
|
缓存 前端开发 JavaScript
前端的全栈之路Meteor篇(二):容器化开发环境下的meteor工程架构解析
本文详细介绍了使用Docker创建Meteor项目的准备工作与步骤,解析了容器化Meteor项目的目录结构,包括工程准备、环境配置、容器启动及项目架构分析。提供了最佳实践建议,适合初学者参考学习。项目代码已托管至GitCode,方便读者实践与交流。
|
14天前
|
人工智能 资源调度 数据可视化
【AI应用落地实战】智能文档处理本地部署——可视化文档解析前端TextIn ParseX实践
2024长沙·中国1024程序员节以“智能应用新生态”为主题,吸引了众多技术大咖。合合信息展示了“智能文档处理百宝箱”的三大工具:可视化文档解析前端TextIn ParseX、向量化acge-embedding模型和文档解析测评工具markdown_tester,助力智能文档处理与知识管理。
|
29天前
|
数据采集 存储 JavaScript
自动化数据处理:使用Selenium与Excel打造的数据爬取管道
本文介绍了一种使用Selenium和Excel结合代理IP技术从WIPO品牌数据库(branddb.wipo.int)自动化爬取专利信息的方法。通过Selenium模拟用户操作,处理JavaScript动态加载页面,利用代理IP避免IP封禁,确保数据爬取稳定性和隐私性。爬取的数据将存储在Excel中,便于后续分析。此外,文章还详细介绍了Selenium的基本设置、代理IP配置及使用技巧,并探讨了未来可能采用的更多防反爬策略,以提升爬虫效率和稳定性。
|
3月前
|
关系型数据库 MySQL Shell
不通过navicat工具怎么把查询数据导出到excel表中
不通过navicat工具怎么把查询数据导出到excel表中
41 0
|
26天前
|
数据处理 Python
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
这篇文章介绍了如何使用Python读取Excel文件中的数据,处理后将其保存为txt、xlsx和csv格式的文件。
44 3
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
|
28天前
|
easyexcel Java UED
SpringBoot中大量数据导出方案:使用EasyExcel并行导出多个excel文件并压缩zip后下载
在SpringBoot环境中,为了优化大量数据的Excel导出体验,可采用异步方式处理。具体做法是将数据拆分后利用`CompletableFuture`与`ThreadPoolTaskExecutor`并行导出,并使用EasyExcel生成多个Excel文件,最终将其压缩成ZIP文件供下载。此方案提升了导出效率,改善了用户体验。代码示例展示了如何实现这一过程,包括多线程处理、模板导出及资源清理等关键步骤。
|
2月前
|
数据采集 存储 数据挖掘
使用Python读取Excel数据
本文介绍了如何使用Python的`pandas`库读取和操作Excel文件。首先,需要安装`pandas`和`openpyxl`库。接着,通过`read_excel`函数读取Excel数据,并展示了读取特定工作表、查看数据以及计算平均值等操作。此外,还介绍了选择特定列、筛选数据和数据清洗等常用操作。`pandas`是一个强大且易用的工具,适用于日常数据处理工作。

推荐镜像

更多