当前位置: 首页 > 编程笔记 >

不到30行JS代码实现Excel表格的方法

暨嘉
2023-03-14
本文向大家介绍不到30行JS代码实现Excel表格的方法,包括了不到30行JS代码实现Excel表格的方法的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了不到30行JS代码实现Excel表格的方法,可见jQuery并非不可替代。分享给大家供大家参考。具体分析如下:

某国外程序员展示了一个由原生JS写成不依赖第三方库的,Excel表格应用,有以下特性:

① 由不足30行的原生JavaScript代码实现
② 不依赖第三方库
③ Excel风格的语义分析 (公式以 "=" 开头)
④ 支持任意表达式 (=A1+B2*C3)
⑤ 防止循环引用
⑥ 基于localStorage的自动本地持久化存储

效果展示如下图所示:

代码分析:

CSS略,HTML核心仅一行:

<table></table>

JavaScript代码如下:

for (var i=0; i<6; i++) {

    var row = document.querySelector("table").insertRow(-1);

    for (var j=0; j<6; j++) {

        var letter = String.fromCharCode("A".charCodeAt(0)+j-1);

        row.insertCell(-1).innerHTML = i&&j ? "" : i||letter;

    }

}

var DATA={}, INPUTS=[].slice.call(document.querySelectorAll("input"));

INPUTS.forEach(function(elm) {

    elm.onfocus = function(e) {

        e.target.value = localStorage[e.target.id] || "";

    };

    elm.onblur = function(e) {

        localStorage[e.target.id] = e.target.value;

        computeAll();

    };

    var getter = function() {

        var value = localStorage[elm.id] || "";

        if (value.charAt(0) == "=") {

            with (DATA) return eval(value.substring(1));

        } else { return isNaN(parseFloat(value)) ? value : parseFloat(value); }

    };

    Object.defineProperty(DATA, elm.id, {get:getter});

    Object.defineProperty(DATA, elm.id.toLowerCase(), {get:getter});

});

(window.computeAll = function() {

    INPUTS.forEach(function(elm) { try { elm.value = DATA[elm.id]; } catch(e) {} });

})();

其实通过上文我们可以看出最核心的几步使用了EMEAScript5和HTML5的特性, 如:

querySelectorAll: 提供类似jQuery选择器的查询,由此可见,第三方JS库如jQuery并不是必不少的。

var matches = document.querySelectorAll("div.note, div.alert");

defineProperty 提供了类以Java的get,set访问/设置预处理方法,还有其他一些配置属性,如:是否可配置,可枚举等。

Object.defineProperty(o, "b", {get : function(){ return bValue; },

                               set : function(newValue){ bValue = newValue; },

                               enumerable : true,

                               configurable : true});

希望本文所述对大家的javascript程序设计有所帮助。

 类似资料:
  • 本文向大家介绍vue中导出Excel表格的实现代码,包括了vue中导出Excel表格的实现代码的使用技巧和注意事项,需要的朋友参考一下 项目中我们可能会碰到导出Excel文件的需求,一般后台管理系统中居多,将table中展示的数据导出保存到本地。当然我们也可以通过一些处理来修改要导出的数据格式,具体需求具体对待。 1、首先我们需要安装3个依赖,file-saver、xlsx和script-load

  • 本文向大家介绍Jquery ajax请求导出Excel表格的实现代码,包括了Jquery ajax请求导出Excel表格的实现代码的使用技巧和注意事项,需要的朋友参考一下 直接贴代码吧 简单说明一下: 使用情形:ajax请求服务端,返回json数据,出现的新需求是要把返回的json导出为excel表格。 上述代码中,dataParams为ajax的请求参数,是在前面定义的Object类型的对象,因

  • 本文向大家介绍JS组件Bootstrap Table表格行拖拽效果实现代码,包括了JS组件Bootstrap Table表格行拖拽效果实现代码的使用技巧和注意事项,需要的朋友参考一下 一、业务需求及实现效果 项目涉及到订单模块,那天突然接到一个需求,说是两种不同状态的订单之间要实现插单的效果,页面上呈现方式是:左右两个Table,左边Table里面是状态为1的订单,右边Table里面是状态为2订单

  • 本文向大家介绍JS组件Bootstrap Table表格多行拖拽效果实现代码,包括了JS组件Bootstrap Table表格多行拖拽效果实现代码的使用技巧和注意事项,需要的朋友参考一下 前言:前天刚写了篇JS组件Bootstrap Table表格行拖拽效果,今天接到新的需要,需要在之前表格行拖拽的基础上能够同时拖拽选中的多行。用了半天时间研究了下,效果是出来了,但是感觉不尽如人意。先把它分享出来

  • 本文向大家介绍60行js代码实现俄罗斯方块,包括了60行js代码实现俄罗斯方块的使用技巧和注意事项,需要的朋友参考一下 这是我之前网上看到的,很牛逼的一位大神写的,一直膜拜中 以上所述就是本文的全部内容,希望大家能够喜欢。

  • 本文向大家介绍Python实现合并excel表格的方法分析,包括了Python实现合并excel表格的方法分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python实现合并excel表格的方法。分享给大家供大家参考,具体如下: 需求 将一个文件夹中的excel表格合并成我们想要的形式,主要要pandas中的concat()函数 思路 用os库将所需要处理的表格放到同一个列表中,然后遍