当前位置: 首页 > news >正文

javascript本地上传并解析excel文件

通常,一般读取Excel都是由后台来处理,不过如果需求要前台来处理,也是可以的。在做一个测试案例,页面加载网格地图的时候,为了避免与后端服务器的交互,需要本地上传Excel文件,然后根据上传文件的内容,将对应网格的属性加载显示到地图上,代码如下所示:
1.需要用到插件js-xlsx,下载地址:js-xlsx
2.demo:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script src="./js/xlsx.full.min.js"></script>
    </head>
    <body>
        <input type="file"onchange="importf(this)" />
        <div id="demo"></div>
        <script>
            /*
            FileReader共有4种读取方法:
            1.readAsArrayBuffer(file):将文件读取为ArrayBuffer。
            2.readAsBinaryString(file):将文件读取为二进制字符串
            3.readAsDataURL(file):将文件读取为Data URL
            4.readAsText(file, [encoding]):将文件读取为文本,encoding缺省值为'UTF-8'
                         */
            var wb;//读取完成的数据
            var rABS = false; //是否将文件读取为二进制字符串

            function importf(obj) {//导入
                if(!obj.files) {
                    return;
                }
                var f = obj.files[0];
                var reader = new FileReader();
                reader.onload = function(e) {
                    var data = e.target.result;
                    if(rABS) {
                        wb = XLSX.read(btoa(fixdata(data)), {//手动转化
                            type: 'base64'
                        });
                    } else {
                        wb = XLSX.read(data, {
                            type: 'binary'
                        });
                    }
                    //wb.SheetNames[0]是获取Sheets中第一个Sheet的名字
                    //wb.Sheets[Sheet名]获取第一个Sheet的数据
                    document.getElementById("demo").innerHTML= JSON.stringify( XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]) );
                };
                if(rABS) {
                    reader.readAsArrayBuffer(f);
                } else {
                    reader.readAsBinaryString(f);
                }
            }

            function fixdata(data) { //文件流转BinaryString
                var o = "",
                    l = 0,
                    w = 10240;
                for(; l < data.byteLength / w; ++l) o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w, l * w + w)));
                o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w)));
                return o;
            }
        </script>
    </body>
</html>

上传excel文件的内容:
这里写图片描述
在浏览器解析excel文件显示的对应内容:

这里写图片描述

上传文件后显示到网格地图上的内容:
这里写图片描述
网格地图上面由上到下内容依次对应是日期,标号name,监测值等,加载的所有值均是根据一个geojson加载的,即将浏览器中的解析结果拿到后,遍历那个对象,然后在相应的geojson文件中找到对应的编号name ,获取此编号的监测值和日期,显示到地图上。。

相关文章:

  • echarts柱状图的x轴文字纵向显示
  • ajax实现跨域请求的几种方式--前端
  • css3-单位px与vw,rem的区别
  • openlayers4通过拖动滑动条设置图层颜色透明度
  • openlayers4判断一个点是否在闭合图形的内部
  • 常见电脑屏幕分辨率
  • css3更改默认滚动条样式-webkit-scrollbar
  • GIS开发-天地图按照地名搜索定位
  • css3中的伪类before和after常见用法
  • openlayers4获取一个图形的边界
  • Vue.js小例子--tab选项卡切换
  • 使用openlayers3加载png格式图片
  • openalyers为自定义覆盖物overlay添加点击事件
  • absolute和float的区别
  • float定位对内联元素和块状元素的影响
  • 《深入 React 技术栈》
  • 【面试系列】之二:关于js原型
  • Apache的80端口被占用以及访问时报错403
  • CentOS从零开始部署Nodejs项目
  • JAVA之继承和多态
  • spring + angular 实现导出excel
  • SQL 难点解决:记录的引用
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • vue 配置sass、scss全局变量
  • Web设计流程优化:网页效果图设计新思路
  • 精彩代码 vue.js
  • 前端代码风格自动化系列(二)之Commitlint
  • 前端之Sass/Scss实战笔记
  • 使用common-codec进行md5加密
  • 微服务入门【系列视频课程】
  • 智能网联汽车信息安全
  • 你对linux中grep命令知道多少?
  • 1.Ext JS 建立web开发工程
  • Semaphore
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • ​什么是bug?bug的源头在哪里?
  • #《AI中文版》V3 第 1 章 概述
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (二开)Flink 修改源码拓展 SQL 语法
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (一)UDP基本编程步骤
  • (转)重识new
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • .NET Core跨平台微服务学习资源
  • .NET Core引入性能分析引导优化
  • .NET 中创建支持集合初始化器的类型
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .Net7 环境安装配置
  • [ NOI 2001 ] 食物链