TSS Excel导入导出

Excel==>数据表

说起数据处理,Excel是个避不开的标杆,许多终端用户喜欢在Excel中管理他们的数据,Excel的灵活性的确无与伦比,企业发生变化需要快速的反应,Excel可以快速的调整数据模板,应用系统则往往很难扩展。但Excel也有其不擅长的地方,比如分布式多点数据采集、在线分发数据、大数据量、流程控制、安全性等方面,其不足也很明显。TSS数据表可有效弥补Excel的诸多不足。同时TSS也提供了丰富的工具与接口,可以便捷在数据表和Excel直接进行数据转换,各取所长,高效管理您的数据。

按Excel生成数据表

假设我们有如下的一份图书销售数据表格(点击可下载),其包含了3个sheet页,分别是【销售情况】、【数据透视分析】、【图书定价】,除了透视分析是个图表,其余两个是标准的电子表格(等行等列,没有复合表头等)。 现在我们只需一步操作,便可一次性把其中两个电子表格的数据导入到TSS中。右键点击分组,选择【导入Excel文件】,选择“本地数据源”,选择Excel文件完成导入。导入完成后刷新资源树,可以看到新增出来两个和sheet页同名的树节点,双击树节点即可浏览表中的数据。如下图: 导入完成后,Excel表格就变成数据库里的数据了,同时在TSS数据表里有完整的定义,可以看到数据表创建了和Excel一样的字段列,以及一样的字段类型。通过数据表,从此数据采集录入、分析、分发等可在线完成,可以严格控制数据权限,可以走审批流程,可以上传附件资料等等。瞬间,你其实已经完成了两个软件系统功能模块的开发:销售数据管理 和 图书定价管理。当然也可以继续在Excel里维护数据,定时把数据依次导入到生成的数据表里。 更多数据表的功能参考:《TSS 数据表开发指南》

导入Excel到数据表

本案例演示如何依据Excel创建数据表,并导入数据。相比于上一节《按Excel生成数据表》一步到位(表名、字段名都是自动生成),有时候我们希望定制生成数据表的表名、字段名、字段类型等进行定制。基于现有的Excel表(注:需为Excel文件第一个sheet页),可以快速创建出TSS数据表及导入数据,具体步骤如下:

1、选中Excel的表头行,然后【复制】。(注意:不支持复合型表头) 2、在TSS的【数据表】里创建一张新数据表【订单销售明细】,表名【order_list】,将第一步复制好的表头行黏贴到新数据表的【表字段定义】,再点【配置】 3、数据字段默认为字符串,日期、数字等字段需要明确指定其类型,默认字段名为c1、c2、c3...可自行修改。完成后点【完成配置】,然后【保存】数据表
4、双击打开新建的数据表,点击【Excel导入】按钮,选择Excel文件进行导入(注:需为Excel文件第一个sheet页),提示导入成功后刷新即能看到数据 5、导入完成后,可以基于此数据表进行授权(权限分录入、浏览、维护等)、数据透视、统计汇总、在线分发等。

导入CSV到数据表

CSV导入数据表和Excel导入数据表基本一致,CSV格式的数据不带类型,默认导入一律按字符串类型处理,要求每个字段值不允许存在 换行符 和 英文逗号。

个性化导入设置

TSS数据表支持各种丰富的导入场景,普通增量导入、部分导入、覆盖式导入、自定义导入等。可配置的参数有:

  • 是否允许分批导入:together=false|true,默认为true,只要有一行校验失败,整个CSV文件都不允许导入,如果为false,则允许导入校验正确的行数据
  • 唯一性字段(一个或多个):uniqueCodes , 以此参数的列标识行的唯一,覆盖式导入必须配置
  • 自定义表头映射模:headerTL,适用于第三方系统导出的数据导入至TSS数据表,相互之间表头名称不一致的情形(可能会有多个不同三方系统的导出数据,都需要导入到TSS的某张数据表),映射表以外的字段则被忽略不进行导入。
    例如:headerTL = 订单号:订单编码|订单编号,货品:sku,数量:qty,类型:{良品},买家:${userCode} 。 映射与被映射字段用冒号分隔,其中TSS的字段在前。
    • 订单号:订单编码|订单编号:TSS定义为“订单号”,导入文件可以是“订单编码”或“订单编号”;
    • 类型:{良品}:表示TSS数据表里名为“类型”的字段需要一个默认值“良品”,该值导入Excel里没有;
    • 买家:${userCode}: ${userCode}为系统登录人的编码,导入时自动设值到“买家”列;

覆盖式导入

相比普通增量式导入,覆盖式导入同时支持新增和修改,对于已存在的数据进行更新覆盖,没有的则新增,导入完成后,系统会提示“修改多少行,新增多少行”。数据表默认不支持覆盖式导入,首先需定义用来判断规则是否需要覆盖的唯一性字段(比如订单号、人员编号等),支持多个字段(如:uniqueCodes="c1,c2" );

覆盖式导入可分两种,一种是忽略已经存在记录,不做更新;一种则是覆盖更新。可通过参数实现:ignoreExist=false|true 忽略or覆盖已存在的记录,默认为false。为true时,忽略改行数据,不做任何更新

导入数据校验

导入前,可人为对导入数据进行检查。导入文件需满足条件:

  • 模板从数据表【Excel模板】导出(推荐);
  • 表头列的字段名需要和数据表定义的字段Label严格一致,且不能重复;
  • 每一行数据的列数及顺序 ===(严格等于) 表头的列数及顺序,不能多也不能少;
  • 如果导入文件为CSV,则要求每个字段值不允许存在 换行符 和 英文逗号;
依据数据表字段的配置,可以对导入Excel文件的数据进行逐行逐列校验,常见的校验有:
  • 1、导入唯一性校验:导入Excel数据内重复、Excel和DB既有数据重复
  • 2、非空校验:依据数据表字段定义里的【是否必填】
  • 3、字段类型校验:数字(整数、小数)、日期等
  • 4、导入正则校验:依据数据表字段定义里的【校验正则】进行校验
  • 5、空行校验:如果Excel里某一行所有字段值都为空,则忽略改行
如果某一行数据校验没有通过,则改行不会导入,当正常行导入完成后,这些异常行会单独被导出到一个Excel文件,用户下载后,可以查看具体导入校验失败的原因。

导入自动取号生成

如果某一列是是自动生成取号编码的,在模板里保留该列值为空,批量导入时,会自动为该列每一行数据生成一个取号编码。如果导入时编码列值不为空,则不再生成新的编码,直接使用填入的编码值。

导入自动补齐数据

如果某一列数据是依据另外一列自动生成的,比如导入库存数据的Excel文件里有货品名称列,需要自动依据名称把货品编码也关联出来放到库存表里,则可以在货品编码这一列写一个自定义的SQL语句: 'valSQL':'select code as skuCode from w_sku where name like ^%${ skuName }%^ '

导入后自动触发ETL或定时Job

  • ETL参数 etlAfterImport: etlId
  • JOB参数 jobAfterImport: jobCode 或 id

自定义导入

自定义导入模板

创建完数据表时,默认允许批量导入,创建完成后,打开数据表进行操作,可以在顶部看到三个数据批量导入导出相关的按钮:【导出数据】、【Excel模板】、【Excel导入】,其中Excel模板】即是我们需要的导入模板,下载后按格式填写数据,即可通过【Excel导入】将数据批量导入进来。默认的导入模板包含数据表定义的所有字段列。数据录入表也支持自定义导入模板:
  • 模板里包含的字段集配置在备注里,字段之间用逗号分隔 import_tl_fields:=姓名,电话,地址
  • 把模板不需要的字段配置在备注里,字段之间用逗号分隔 import_tl_ignores:=性别,年龄,这样生成模板时自动忽略这些字段

自定义导入处理JAVA类

数据表支持完全自定义导入,需要在服务端自定义一个导入处理类,可以参照或继承 com.boubei.tss.dm.record.file.ImportCSV,然后在前端(HTML等)调用如下接口:
   var url = "/tss/auth/file/upload?afterUploadClass=com.boubei.tss.dm.record.file.ImportXXX";
   url += "&recordId=" + recordId;     // 数据表的ID 或 table 或 name
   url += "&uniqueCodes=oto,phone";    // 唯一标识列
   url += "&together=false";    
   url += "&ignoreExist=true";

CSV、XLS、XLSX

导入和导出可基于CSV、XLS、XLSX这三种电子表格文件类型,支持两种编码:GBK、UTF-8。


数据表==>Excel

导出数据到Excel

点击Grid顶部按钮【导出数据】,即可导出当前Grid里的数据(如有分页,导出所有页数据),单次默认可以导出50000行。如需支持单次导出更多数据,在页面控制脚本里重新设置EXP_PAGE_SIZE的值。

导出数据表Excel模板

允许批量数据导入的录入表页面,顶部都有一个按钮【Excel模板】,点击可下载导入模板,按模板填充数据。

自定义导出格式

通过指定Fields参数,可以实现自定义导出数据格式。

透析汇总数据然后导出

Excel vs 数据表

Excel是单用户操作,数据收集几乎依赖的是电子邮箱。
基层单位:数据维护->保存->邮件发送,
企业集团:打开邮箱->下载->保存->打开文件->审核->复制->粘贴等手工操作。
很多人的电子表格常常是不能简单复制使用的,计算和公式也就需要在一名员工离职之后重新设计。总的来说,每个人完成一项任务都有很多种方法——无论是在设计还是执行阶段——所以要保持一致性是很难的。


获得帮助:boubei@163.com  TSS社区: http://bbs.boubei.com ,QQ群:162875668