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 有用的脚本函数
May 07 Javascript
jquery自定义类似$.ajax()的方法实现代码
Aug 13 Javascript
JS父页面与子页面相互传值方法
Mar 05 Javascript
javascript动态创建及删除元素的方法
Dec 22 Javascript
基于jQuery插件实现点击小图显示大图效果
May 11 Javascript
jQuery EasyUI右键菜单实现关闭标签/选项卡
Oct 10 Javascript
Node.js Express 框架 POST方法详解
Jan 23 Javascript
微信小程序 合法域名校验出错详解及解决办法
Mar 09 Javascript
angular仿支付宝密码框输入效果
Mar 25 Javascript
微信小程序中的swiper组件详解
Apr 14 Javascript
bootstrap fileinput插件实现预览上传照片功能
Jan 23 Javascript
JS中原始值和引用值的储存方式示例详解
Mar 23 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获取post中的json数据的实现方法
2011/06/08 PHP
PHP中其实也可以用方法链
2011/11/10 PHP
php简单的留言板与回复功能具体实现
2014/02/19 PHP
php函数mkdir实现递归创建层级目录
2016/10/27 PHP
JavaScript 更严格的相等 [译]
2012/09/20 Javascript
JavaScript作用域链使用介绍
2013/08/29 Javascript
使用jQuery和PHP实现类似360功能开关效果
2014/02/12 Javascript
生成二维码方法汇总
2014/12/26 Javascript
jquery中EasyUI实现异步树
2015/03/01 Javascript
JavaScript统计网站访问次数的实现代码
2015/11/18 Javascript
jQuery 3 中的新增功能汇总介绍
2016/06/12 Javascript
第一次接触神奇的Bootstrap
2016/10/14 Javascript
Angularjs处理页面闪烁的解决方法
2017/03/09 Javascript
JQuery EasyUI的一些常用组件
2017/07/12 jQuery
Angular4自制一个市县二级联动组件示例
2017/11/21 Javascript
小程序开发踩坑:页面窗口定位(相对于浏览器定位)(推荐)
2019/04/25 Javascript
Bootstrap table 实现树形表格联动选中联动取消功能
2019/09/30 Javascript
JS实现分页导航效果
2020/02/19 Javascript
JavaScript Tab菜单实现过程解析
2020/05/13 Javascript
Python遍历zip文件输出名称时出现乱码问题的解决方法
2015/04/08 Python
Python xlrd读取excel日期类型的2种方法
2015/04/28 Python
python实现感知器算法(批处理)
2019/01/18 Python
在Ubuntu 20.04中安装Pycharm 2020.1的图文教程
2020/04/30 Python
python 用struct模块解决黏包问题
2020/11/07 Python
Python爬虫之Selenium设置元素等待的方法
2020/12/04 Python
python实现无边框进度条的实例代码
2020/12/30 Python
常用的HTML5列表标签
2017/06/20 HTML / CSS
世界上最大的乐器零售商:Guitar Center
2017/11/07 全球购物
资生堂英国官网:Shiseido英国
2020/12/30 全球购物
酷瑞网络科技面试题
2012/03/30 面试题
人力资源职位说明书
2014/07/29 职场文书
村党支部书记个人对照材料汇报
2014/10/26 职场文书
小学生组织委员竞选稿
2015/11/21 职场文书
中国现代文学之经典散文三篇
2019/09/18 职场文书
jQuery class属性操作addClass()与removeClass()、hasClass()、toggleClass()
2021/03/31 jQuery
详解 TypeScript 枚举类型
2021/11/02 Javascript