全栈低码设计开源框架 json-script-rule 实战开发导出功能

exports插件

该插件用于导出数据到excel或者word之中,导出word功能需要手动在pom中添加com.deepoove poi-tl依赖,因为该依赖将导致大量的jar包被引入,所以默认为不依赖。导出的过程为先通过get插件查询出数据,之后再将数据灌入到指定的模板中。exports插件底层采用SXSSFWorkbook技术,因此不会造成内存溢出问题,对比easy poi,该插件不仅支持自定义模板,而且性能也优于easy poi,在同一台机器上反复测试,结论是导出10万条数据,exports插件耗时2.1-2.6秒之间,而使用easy poi则是在4.588秒左右。下面是导出的json用例

{
    "actions": [
        {
            "name":"test_export",
            "exports":{
                "word":{
                    "outFilePath":"D:/asddsa/laimi.docx",
                    "responseFileName":"word response file name",
                    "relativePath":"/template1.docx",
                    "data":{"suo":"value","sBillNo":"no.11232","dCreatetime":"2020-10-21 10:11:11"}
                },
                "excel":{
                    "responseFileName":"excel response file name",
                    "absolutePath":"D:/xxxx/asddsa.xlsx",
                    "sheets":[
                        {
                            "action":{
                                "name":"asddsa",
                                "get": {
                                    "relation": {
                                        "classes":["bao.ZsImport"]
                                    },
                                    "page":{"pageSize":0},
                                    "condition":{
                                        "type":"or",
                                        "where":{"eq":{"bao.ZsImport.name":["王小二mysql","李小四mysql"]}}
                                    },
                                    "fields":["#&bao.ZsImport.id","name","birthDay","#&qian@qq","#$ifnull(&remark,&name)@remark"]
                                }
                            },
                            "tsn":"lanliya",
                            "nsn":"sheetNameNo.1",
                            "start":5,
                            "params":{"asd":"2020-10-20 10:10:10"}
                        },{
                            "action":{
                                "name":"qweewq",
                                "get": {
                                    "relation": {
                                        "classes":["test.business.po.bao.ZsImport","ZsImport2"]
                                    },
                                    "page":{"pageSize":0}
                                }
                            },
                            "nsn":"sheetNameNo.2",
                            "start":4
                        }
                    ]
                }
            }
        }
    ]
}

参数说明

  • sheets:表示所要导出的sheet对象的数组
  • outFilePath:默认导出路径,值不能是一个目录,应该是一个包含文件名的绝对路径名。别名是"out",如果不设置该属性则会通过客户端响应弹窗来手动设置导出excel文件的路径
  • responseFileName:客户端响应后弹出框里默认的文件名,别名是"rfn",设置该属性时应该包含文件名的后缀名
  • aPath:模板绝对路径,别名aPath,如果不设置模板的路径将会使用默认模板导出数据
  • rPath:模板相对路径,别名rPath,如果不设置模板的路径将会使用默认模板导出数据
  • cacheRow:别名是"cache",表示达到多少缓存数据行数时将内存数据刷新到硬盘上。合并单元格时如果总数据行大于此值则将无法正确合并单元格,默认是SXSSFWorkbook.DEFAULT_WINDOW_SIZE 100
sheet Parameter Description
  • action:此处非数组,可以通过这个属性来调用action动作模型,导出时只能选择get模型
  • defaultValue:数据为空时单元格的默认值,别名default,不设置则用/符号代替
  • dateFormat:如果params属性中含有符合日期格式的字符串值,则该属性将指定这些字符串应以哪种格式来展示,别名format,默认为"yyyy-MM-dd HH:mm:ss"
  • mergeCell:是否合并值相同的两个相邻列单元格,别名merge,使用该属性时需要注意JSRuleExportExcel中的cacheRow缓存行的设置,确保导出的总数据行数不小于该数值,否则将出现意外结果
  • wrapText:是否允许通过转义字符进行单元格换行操作,别名wrap,通常搭配lineBreakTag属性使用
  • lineBreakTag:换行操作的转义字符,别名是"lbt",wrapText为true时有效
  • tsn:tempSheetName,excel模板中对应的sheet的名称,别名tsn,如果不设置则按照json中sheet的数组序号来查找相应的模板
  • **nsn:- **newSheetName,导出的excel文件中的sheet的名称,别名"nsn",如果不设置则按照sheet+数字的方式来命名
  • dataLine:别名"start",数据加载的起始行号,行号与excel中的行号对应,它表示从模板中的哪一行开始加载表的数据,默认为第一行。这一行通常位于模板表头下面的第一行,在这一行中开发者要根据get插件返回的结果对列的名称进行定义,表示excel中的某一列对应数据库表的哪一列,如下

Header             Id                     name              birthDay
dataLine  entityName-fieldName      entityName-name         birthDay
  • containsHead:在未设置模板的情况下是否根据实体类信息默认导出一个表头,别名"ich",默认为true
  • params:动态参数集合,当前sheet中数据行以上除头行以外的任何一个地方由<>括起来的key都将替换成该参数中的值value
  • data:待导出的数据集合,如果该属性和action中的get插件同时存在,则优先该属性的数据导出
  • fieldMappings:设置要导出哪些列,别名为exports,该属性仅在未设置模板时有意义,该属性的顺序表示导出时对应的sheet列的头的顺序
    如果此属性未设置,则默认Po配置中的export属性来生成列头(export如果为空默认带前缀的字段名),同时导出所有的列。这些列是否有值和所查询的字段属性fields相关,fields如果为空表示查询所有字段,如果有值则应是带class前缀的字段(避免多表重复字段),否则将不会导出此列的数据
    如果此属性已设置,则根据该属性的设置来断定所要导出的列都有哪些,此时的key为字段别名,可参考别名表达式的写法,value为对应的列头的名称

uploads插件

上传插件用于上传文件,其属性如下

  • aPath:上传文件存放于服务器的绝对路径
  • rPath:上传文件存放于服务器的相对路径
  • base64Data:上传文件的数据流,文件字节码采用base64编码

"uploads":{
    "base64Data":"UEsDBBQACAgIAFZ1CVUAA......
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九天流云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值