jQuery仿Excel表格编辑功能的实现代码


Posted in Javascript onMay 01, 2013

在 Excel 中可进行的操作,你几乎都可以在网页中做到,如拖动复制、Ctrl+C 、Ctrl+V 等等。

另外在浏览器支持方面,它支持以下的浏览器 IE7+, FF, Chrome, Safari, Opera。

如何使用:
     首先在页面中引入 jQuery 框架和 Handsontable 插件的相关 JS 和 CSS 文件,以下列出的两个是必要的,还有其它的是可选的,如果需要某个功能时就(参看demo)加上。

    <script src="jquery.min.js"></script>
    <script src="jquery.handsontable.full.js"></script>
    <link rel="stylesheet" href="jquery.handsontable.full.css">

然后添加一个用于呈现 Excel 编辑表格的 DIV 层

<div id="example1" ></div>

最后就可以对其进行初始化了

//数据
            var data = [
              {id: 1, name: "Ted", isActive: true, color: "orange"},
              {id: 2, name: "John", isActive: false, color: "black"},
              {id: 3, name: "Al", isActive: true, color: "red"},
              {id: 4, name: "Ben", isActive: false, color: "blue"}
            ];
            //黄色渲染方法
            var yellowRenderer = function (instance, td, row, col, prop, value, cellProperties) {
              Handsontable.TextCell.renderer.apply(this, arguments);
              $(td).css({
                background: 'yellow'
              });
            };
            //绿色渲染方法
            var greenRenderer = function (instance, td, row, col, prop, value, cellProperties) {
              Handsontable.TextCell.renderer.apply(this, arguments);
              $(td).css({
                background: 'green'
              });
            };
            //初始化
            var $container = $("#example1");
            $container.handsontable({
              data: data,
              startRows: 5,
              colHeaders: true,
              minSpareRows: 1,
              columns: [
                {data: "id"},
                {data: "name", type: {renderer: yellowRenderer}}, //黄色渲染
                {data: "isActive", type: Handsontable.CheckboxCell}, //多选框
                {data: "color",
                  type: Handsontable.AutocompleteCell, //自动完成
                  source: ["yellow", "red", "orange", "green", "blue", "gray", "black", "white"] //数据源
                }
              ],
              cells: function (row, col, prop) {
                if (row === 0 && col === 0) {
                  return {type: {renderer: greenRenderer}};
                }
              }
            });

注意是div容器加载完了之后进行初始化:

demo代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Basic Demo</title>
    <script src="jquery.min.js"></script>
    <script src="jquery.handsontable.full.js"></script>
    <link rel="stylesheet" href="jquery.handsontable.full.css">
    <script>
        $(function(){
            //数据
            var data = [
              {id: 1, name: "Ted", isActive: true, color: "orange"},
              {id: 2, name: "John", isActive: false, color: "black"},
              {id: 3, name: "Al", isActive: true, color: "red"},
              {id: 4, name: "Ben", isActive: false, color: "blue"}
            ];
            //黄色渲染方法
            var yellowRenderer = function (instance, td, row, col, prop, value, cellProperties) {
              Handsontable.TextCell.renderer.apply(this, arguments);
              $(td).css({
                background: 'yellow'
              });
            };
            //绿色渲染方法
            var greenRenderer = function (instance, td, row, col, prop, value, cellProperties) {
              Handsontable.TextCell.renderer.apply(this, arguments);
              $(td).css({
                background: 'green'
              });
            };
            //初始化
            var $container = $("#example1");
            $container.handsontable({
              data: data,
              startRows: 5,
              colHeaders: true,
              minSpareRows: 1,
              columns: [
                {data: "id"},
                {data: "name", type: {renderer: yellowRenderer}}, //黄色渲染
                {data: "isActive", type: Handsontable.CheckboxCell}, //多选框
                {data: "color",
                  type: Handsontable.AutocompleteCell, //自动完成
                  source: ["yellow", "red", "orange", "green", "blue", "gray", "black", "white"] //数据源
                }
              ],
              cells: function (row, col, prop) {
                if (row === 0 && col === 0) {
                  return {type: {renderer: greenRenderer}};
                }
              }
            });
        });
    </script>
</head>
<body>
    <div id="example1" ></div>
</body>
</html>
Javascript 相关文章推荐
理解Javascript_09_Function与Object
Oct 16 Javascript
为什么要在引入的css或者js文件后面加参数的详细讲解
May 03 Javascript
JS.GetAllChild(element,deep,condition)使用介绍
Sep 21 Javascript
浅析JavaScript中的同名标识符优先级
Dec 06 Javascript
jQuery的cookie插件实现保存用户登陆信息
Apr 15 Javascript
jQuery中on()方法用法实例
Jan 19 Javascript
javascript中scrollTop详解
Apr 13 Javascript
javascript动态获取登录时间和在线时长
Feb 25 Javascript
react-native ListView下拉刷新上拉加载实现代码
Aug 03 Javascript
利用Vue构造器创建Form组件的通用解决方法
Dec 03 Javascript
vue里如何主动销毁keep-alive缓存的组件
Mar 21 Javascript
Vue中全局变量的定义和使用
Jun 05 Javascript
JavaScript 实现类的多种方法实例
May 01 #Javascript
Json字符串转换为JS对象的高效方法实例
May 01 #Javascript
Jquery post传递数组方法实现思路及代码
Apr 28 #Javascript
javascript中的onkeyup和onkeydown区别介绍
Apr 28 #Javascript
JQuery中如何传递参数如click(),change()等具体实现
Apr 28 #Javascript
JQuery制作的放大效果的popup对话框(未添加任何jquery plugin)分享
Apr 28 #Javascript
JS中setInterval、setTimeout不能传递带参数的函数的解决方案
Apr 28 #Javascript
You might like
PHP面向对象程序设计之类与反射API详解
2016/12/02 PHP
ThinkPHP实现简单登陆功能
2017/04/28 PHP
thinkPHP框架实现的无限回复评论功能示例
2018/06/09 PHP
DWR Ext 加载数据
2009/03/22 Javascript
javascript 内存回收机制理解
2011/01/17 Javascript
JavaScript语言核心数据类型和变量使用介绍
2013/08/23 Javascript
ECMAScript 5中的属性描述符详解
2015/03/02 Javascript
JS替换字符串中空格方法
2015/04/17 Javascript
js css+html实现简单的日历
2016/07/14 Javascript
使用jQuery.Qrcode插件在客户端动态生成二维码并添加自定义Logo
2016/09/01 Javascript
JavaScript中push(),join() 函数 实例详解
2016/09/06 Javascript
jQuery 判断元素整理汇总
2017/02/28 Javascript
详解Vue中使用v-for语句抛出错误的解决方案
2017/05/04 Javascript
让nodeJS支持ES6的词法----babel的安装和使用方法
2017/07/31 NodeJs
[01:32]DOTA2次级联赛——首支职业女子战队选拔赛全记录
2014/10/23 DOTA
利用Python脚本实现ping百度和google的方法
2017/01/24 Python
分析python切片原理和方法
2017/12/19 Python
Python文本处理之按行处理大文件的方法
2018/04/09 Python
Django2.1.3 中间件使用详解
2018/11/26 Python
python调用staf自动化框架的方法
2018/12/26 Python
解决python中画图时x,y轴名称出现中文乱码的问题
2019/01/29 Python
python点击鼠标获取坐标(Graphics)
2019/08/10 Python
Python龙贝格法求积分实例
2020/02/29 Python
Python的scikit-image模块实例讲解
2020/12/30 Python
全球摩托车装备领导者:RevZilla
2017/09/04 全球购物
美国最大的购物网站:Amazon.com(亚马逊美国)
2020/05/23 全球购物
说说你所熟悉或听说过的j2ee中的几种常用模式?及对设计模式的一些看法
2012/05/24 面试题
为什么UNION ALL比UNION快
2016/03/17 面试题
工作疏忽检讨书
2014/01/25 职场文书
小学毕业典礼主持词
2014/03/27 职场文书
《从现在开始》教学反思
2014/04/15 职场文书
2014年会计主管工作总结
2014/12/20 职场文书
2019年鼓励无偿献血倡议书
2019/09/17 职场文书
Python实现Telnet自动连接检测密码的示例
2021/04/16 Python
红灯733-1型14管5波段半导体收音机
2021/04/22 无线电
JavaGUI模仿QQ聊天功能完整版
2021/07/04 Java/Android