栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

luckysheet使用——导出并下载excel数据及钩子函数的使用等

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

luckysheet使用——导出并下载excel数据及钩子函数的使用等

这里记录一些常用的API,包括对于获取整个在线excel的数据、使用钩子函数等。

获取Excel数据

luckysheet.getAllSheets()
可以将获取到的数据传递到后端通过JSONArray来获取,它是一个一个的sheet页对象的数组,可以通过后端解析出来之后再通过poi将数据下载。
另外可以通过luckysheet.toJson().title来获取下图中的标题,将其作为导出的文件名。
导出luckysheet数据到excel
在lucksheet的API文档中有提到对于数据的导出,我是参考这个帖子进行导出的,并对其中做了一点小的修改,如果有问题,大家可以互相交流学习:

Luckysheet 导入导出 - Java后台处理和js前端实现 https://blog.csdn.net/u014632228/article/details/109738221

主要的问题是此博客中的poi版本可能较低,有些方法在我用的4.1.2的版本中用法已经变了,需要进行修改,主要的修改在方法setCellValue中,大家如果有跟我是类似版本的,可以试用下。

switch (vt) {
                        case 0:
                            style.setVerticalAlignment(VerticalAlignment.CENTER);
                            break;
                        case 1:
                            style.setVerticalAlignment(VerticalAlignment.TOP);
                            break;
                        case 2:
                            style.setVerticalAlignment(VerticalAlignment.BOTTOM);
                            break;
                    }
                    switch (ht) {
                        case 0:
                            style.setAlignment(HorizontalAlignment.CENTER);
                            break;
                        case 1:
                            style.setAlignment(HorizontalAlignment.LEFT);
                            break;
                        case 2:
                            style.setAlignment(HorizontalAlignment.RIGHT);
                            break;
                    }

另外,对于填充值的地方,我也简单做了下修改,通过判断单元格内数据格式去设置写入到excel中的格式,不过我在试用时遇到了一点小问题,暂时还没时间仔细排查问题所在,大家慎用:

   //填充值
                   if (jsonObjectValue != null && jsonObjectValue.get("f") != null) {
                       cell.setCellValue(value);
                   } else {
                       cell = setCellValueByType(cell, jsonObjectValue, value);
                   }
   private static XSSFCell setCellValueByType(XSSFCell cell, JSONObject jsonObjectValue, String value) throws ParseException {
        JSONObject ct = jsonObjectValue.getJSONObject("ct");
        String t = ct.getString("t");
        switch (t){
            case "g":
            case "s":
                cell.setCellValue(value);
                break;
            case "n":
                cell.setCellValue(Double.valueOf(value));
                break;
            case "d":
                String fa = ct.getString("fa");
                if (!fa.equalsIgnoreCase("General")){
                    SimpleDateFormat simpleDateFormat = new SimpleDateFormat(fa);
                    cell.setCellValue(simpleDateFormat.format(simpleDateFormat.parse(value)));
                }else {
                    cell.setCellValue(value);
                }
                break;
            default:
                cell.setCellValue(value);
        }

        return cell;
    }

这里附录下对于lucksheet单元格格式介绍:

https://mengshukeji.github.io/LuckysheetDocs/zh/guide/cell.html#%E5%8D%95%E5%85%83%E6%A0%BC%E5%80%BC%E6%A0%BC%E5%BC%8F

钩子函数
同样,先附录下钩子函数的介绍:

https://mengshukeji.github.io/LuckysheetDocs/zh/guide/config.html#%E9%92%A9%E5%AD%90%E5%87%BD%E6%95%B0

我这里主要用到了两个钩子函数,一个是在sheet页删除时同时去删除我存在map中的部分数据,另一个是在sheet页创建时顺便初始化部分数据,使用如下:

 var options = {
                                    container: 'luckysheet', //luckysheet为容器id
                                    title:  "EXCEL模板", // 设定表格名称
                                    lang: 'zh', // 设定表格语言
                                    gridKey: "excel001",
                                    data: eval(returnValue),
                                    hook: {
                                        sheetDeleteAfter : function (op) {
                                        	//这个是我创建的前端map
                                            excel_modular.delete(op.sheet.index);
                                        },
                                        sheetCreateAfter : function (op) {
                                            newsheet = Object.create(null);
                                            op.sheet.celldata = [{"r":0,"c":0,"v":{"v":"数据起始位置","m":"数据起始位置","ct":{"fa":"General","t":"n"}}},{"r":0,"c":1,"v":{"v":"数据起始位置","m":"数据起始位置","ct":{"fa":"General","t":"n"}}} ];
                                            newsheet.modularinfoId = null;
                                            excel_modular.set(op.sheet.index,newsheet);
                                        }
                                    },
                                    functionButton:
                                        ''
                                }
                                luckysheet.create(options);
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/782846.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号