Handsontable--在线Excel表格

    最近项目中有使用到这个插件,于是重点了解了一下,在github上有9k+的星星,虽然是收费产品,但是别急,小编有办法去掉水印呀!一起来看看吧!

    首先列出它的官方文档 Handsontable,学习一个东西一定要看它的API文档哦!

    其次,它的兼容性,不管你的是Vue项目,React项目、Angle...(不会拼。。。)项目、还是H5,它都是兼容的!这个不要太感动了,一起来操作一下吧!

    如果是H5项目,查看这个H5项目,别人写的很详细,效果如下图。


H5效果图

    我主要做了react项目下实现效果,在npm安装后  npm install handsontable @handsontable/react  在项目中引入css和组件直接使用

关键的配置如下:

            width: '100%', //表格的宽度

            height: 470, //表格的高度 设置了才会出现scroll

            className: "htCenter htMiddle", //垂直水平居中

            colWidths: 55, //每列的宽度

            rowHeights: 35, //每行的高度

            //fixedRowsTop: 2,     //固定两行excel的冻结

            //fixedColumnsLeft: 3, //固定两列  固定行列会影响表格排版

            mergeCells: true, //表示允许单元格合并

            manualColumnMove: false, //列可拖动

            manualRowMove: false, //行可拖动

            manualColumnResize: true, //列可拖拽 调大小

            manualRowResize: true, //行可拖拽 调大小

            autoColumnSize: false, //当值为true且列宽未设置时,自适应列大小

            columnSorting: false, // 排序

            contextMenu: true, //右键菜单

            copyable: true, // 允许键盘复制

            renderer: function(instance, td, row, col, prop, value, cellProperties) {

                // 渲染为text类型,可选的有TimeRenderer、PasswordRenderer等不同的类型

                Handsontable.renderers.TextRenderer.apply(this, arguments);

                // 判断条件

                if (row === 0 || row === 1 || row === 2) {

                    td.style.backgroundColor = '#e0ecff';

                // 此处可以单独渲染某行或某列 根据条件渲染 比如背景色 字体、颜色、粗细等等

                }

            },

            dropdownMenu: true,//头部是否显示menu

            contextMenu: {    //内容部分的menu 对功能汉化

                items: {

                    'row_above': {

                        name: '上方插入一行'

                    },

                    'row_below': {

                        name: '下方插入一行'

                    },

                    "col_left": {

                        name: '左方插入列'

                    },

                    "col_right": {

                        name: '右方插入列'

                    },

                    "remove_row": {

                        name: '删除行',

                    },

                    "remove_col": {

                        name: '删除列',

                    },

                    'separator': Handsontable.plugins.ContextMenu.SEPARATOR,

                    'clear_custom': {

                        name: '清除数据',

                        callback: function() {

                            this.clear();

                        }

                    }

                }

            },

            afterChange: function(changes, source) {     //数据改变时触发此方法 捕捉数据更改

                console.log(this.getData(), '/', changes, '/', source);

            },

    由于项目原因,不好意思,效果图不能展示,抱歉抱歉!需要注意的是此插件的数据格式有两种,一种是数组类型的,如果数据复杂,合并单元格较多,建议使用这种数据格式。还有一种是对象类型的,多用于数据简单的,操作起来更方便。

    最后再来说说这个插件都有哪些bug吧,

    1、在冷冻行或列后,合并的单元格会遭到破坏

    2、冷冻行或列后,查看下面的数据会有延迟(情况出现少),若右侧超出页面大小向下滑动,会出现有的滑有的不滑,即错位,体验不好

    3、导出表格尽量后端做导出,前端导出会出现乱码的情况。

最后,解决一下下面水印的情况,在你安装完依赖后,node_models/handsontable/disthandsontable.full.css文件里面修改css 大概267行吧。。。

#hot-display-license-info {

    display: none !important;

    visibility: hidden;

    font-size: 10px;

    color: #323232;

    padding: 5px 0 3px 0;

    font-family: Helvetica, Arial, sans-serif;

    text-align: left;

}

#hot-display-license-info a {

    font-size: 10px;

    visibility: hidden;

    display: none;

}

    加上display:none; visibility:hidden; 我也不知道我为什么要写两个,可能是尝试的时候一个没有生效这个大家自己下去尝试吧。今天就说这么多啦,不懂的可以留言我告诉你也可以私信我(不经常看),有用的话给个小心心吧!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,219评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,363评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,933评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,020评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,400评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,640评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,896评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,597评论 0 199
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,327评论 1 244
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,581评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,072评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,399评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,054评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,083评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,849评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,672评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,585评论 2 270

推荐阅读更多精彩内容

  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 9,392评论 0 13
  • HTML 5 HTML5概述 因特网上的信息是以网页的形式展示给用户的,因此网页是网络信息传递的载体。网页文件是用...
    阿啊阿吖丁阅读 3,362评论 0 0
  • 导语: 最近在做一个关于报表管理的项目,发现了一款很好用的jQuery插件-Handsontable。它真的特别给...
    m_gyf阅读 23,211评论 22 31
  • 今儿和老婆早早到家,赶在了奶奶和小胖子前面,本以为儿子会很开心,没想到一反常态地一言不发,问他怎么了,又说没什么。...
    赵老怪阅读 138评论 0 1
  • 在床上挺尸 不知道自己在想什么 不知道自己要做什么 不知道自己最近都做了什么 不知道自己为什么做哪些 朋友们都说 ...
    Tooommmy阅读 270评论 1 1