银行业务-Excel文件的拆分逻辑

一、问题:

  随着银行业务数据量的急剧增加,原始的人力统计数据已经不能满足要求,

  需要开发一款可以实现自动化数据统计的系统平台,进行数据的采集、加工、过滤、统计、预测

  其中数据采集方式又以【Excel】格式为人们所熟悉,那么如何把Excel表格的数据进行持久化 ?

  

二、分析:

  首先,需要把实体的Excel文件映射到数据库中,就要对表格进行拆分

  行维度:可以分为表头行、数据行,映射到数据库中就是两张表【头表、DTL表】,其中由于数据的特殊存在【DTL*表】

  列维度:每一列都包含实际的数据信息,在行维度拆分的表中,指定表实际包含的数据列

  

三、实践:

  (1)头表只有几个字段,设置列指定单元格下标即可【单位、时间、说明】

  (2)为了在DTL表中的数据有实际意义,需要在DTL表中包含头表的列【每个表单独设置同样列的代价高】

  (3)DTL表中的列只是单纯的数据列,指定列的长度和列的精度即可,单元格索引即可

  (4)DTL*表为不能直接读取的列【在列名下,存在二级标题】,必须单独出来转置为DTL*表后进行数据的读取

  (5)在配置模板的时候,如果Excel本身是倒置的,需配置转置属性以便正确读取数据

  (6)DTL*表中的列配置的时候,需要配置循环属性,【此处有疑问】

  (7)中心就是把文件包含的信息全部展开,把文件的维度降到【二维】

四、步骤详情:

  1、新建模板

    (1)新建模板,如果文件需要转置读取,配置转置属性

    (2)配置模板标识、标识位置用于校验模板版本

  2、配置头表

    (1)新建头表

    (2)配置头表包含的列【通常列单元格指定的是是具体的表格某一格下标,如A1、B3】

    (3)如果在DTL表中需要添加头表列,需要在配置完其它表后,指定包含属性

  3、配置DTL表

    (1)新建DTL表,开始行到结束行为数据行,不包含文件的第一行说明

    (2)配置列说明时,就是列的起始第一行的列说明,单元格指定为列【A、B】

    (3)如果存在特殊行,那么配置一列,指定单元格为【@】,在特殊行配置里指定具体的读取内容所在单元格

  4、配置DTL*表

    (1)新建DTL*表,一般需要携带DTL表中的说明列信息,使信息有用

    (2)如果说明列在DTL中配置了特殊行,还要在这里配置特殊行

    (3)配置列时,如果该值需要循环就需要配置循环属性

    (4)配置列时需要指定说明为一列,数据信息统一为一列

五、总结:

  1、模板表生成的表后,在数据库中只有配置的列,和文件表格列无关,配置有几列就只有几列

  2、上报数据读取时,向该表中循环插入数据,原则就是逐行插入

  3、数据上报就是获取文件配置关联的模板,然后针对每一个模板的包含配置表进行数据的填充

  4、适配的时候就是抓取文件包含的页签,进行页签匹配,匹配后查找页签对应的模板,获取配置的数表信息

  5、使用配置表信息,从文件中抓取数据循环抓取数据到数据库对应的生成表中

  6、头表的信息抓取就是读取单元格所在位置的值,插入数据库对应的头表中

  7、DTL表数据抓取时,读取列配置的位置,取值插入对应的数据库表中

  8、DTL*表的数据抓取时,需要在思想上转置,循环说明列,进行逐行的数据插入

  9、表的拆分就是把信息进行展开,使每一行数据都包含明确的数据信息

  

原文地址:https://www.cnblogs.com/hackxiyu/p/8386025.html

时间: 2024-10-20 20:54:03

银行业务-Excel文件的拆分逻辑的相关文章

C#将一个excel工作表根据指定范围拆分为多个excel文件

C#将一个excel工作表根据指定范围拆分为多个excel文件 微软Excel没有提供直接的方法来拆分excel文件,因此要拆分一个excel文件最简单的方法可能就是手动剪切和粘贴了,除此之外,还有其他方法如VBA及Visual Studio语言(如C#.VB.NET等)编程的方式.VBA我不是很熟悉,因此这篇文章写的是如何使用C# 将一个excel工作表根据指定的范围拆分为多个excel文件. 下面是一个excel人力资源信息表,里面含有三个部门及一些员工信息: 接下来就开始拆分这个excel

excel多个sheet表拆分成独立的excel文件

一.问题: 公司做一个项目,给的用户上报文是一个包含多个sheet页的excel文件, 但是在实际处理报文数据的时候需要拆分excel文件为多个独立的报文excel文件 二.解决: (1)一个一个的复制,新建文件,生成新的sheet文件,sheet多的时候很麻烦 (2)使用office的宏工具来自动化拆分文件 三.操作步骤: 注意:本操作以wps为例,其它的请自行测试 (1)下载[wps vba宏插件] (2)点击 [开发工具]-->[vba编辑器]-->[插入]-->[模块] (3)复

使用Aspose.Cell控件实现多个Excel文件的合并

之前有写过多篇关于使用Apose.Cell控件制作自定义模板报表和通用的导出Excel表格数据的操作,对这个控件的功能还是比较满意,而且也比较便利.忽然有一天,一个朋友说:你已经有生成基于自定义模板报表了,可是我每个单位都导出一张相同的报表的话,我岂不是要生成很多文件,而且对比查看也不方便,有没有更好的办法合并他们到一个文件里面呢?这样我看报表就方便很多了.本文主要介绍如何实现基于一个自定义报表模式,生成多个类似报表合并在一个文件中具体操作. 查询Apose.Cell控件的使用介绍,WorkBo

C# API: 生成和读取Excel文件

我们想为用户提供一些数据,考虑再三, 大家认为对于用户(人,而非机器)的可读性, Excel文件要好一些. 因为相比csv,xml等文件, Excel中我们可以运用自动筛选, 窗口锁定, 还可以控制背景颜色, 前景颜色, 字体, 网格等等... 业务逻辑并不复杂, 文件的内容和格式也比较固定,所以大家决定直接拿C#去创建这些文件. 于是一搜索,首先来到了这个链接:C# Excel Tutorial 里面包含了下面这些主题的代码示例, 示例很详细, 编译可直接运行. How to create E

效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】) 转

效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中[附源代码下载])  本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较   (三)SSIS的简介   (四)数据库中存储过程示例(SSIS应用需要) (五)Excel模板的制作(这步这么简单,稍微介绍一下)   (六)SSIS操作过程(生成Package,用来调用)(下一篇随笔将详细讲解制作Package包的过程,图片太多,篇幅过长,因此本文将直接采用生成的Package包进行

VB操作EXCEL文件大全

Private Sub writeToExcel(strTmp1() As String, colTmp1 As Collection) ' '    Dim tmp1 Dim i1 As Integer, intCol As Integer, intRow As Integer Dim xlApp As New Excel.Application Dim xlBook As New Excel.Workbook Dim xlSheet As New Excel.Worksheet Dim st

Python中,添加写入数据到已经存在的Excel的xls文件,即打开excel文件,写入新数据

背景 Python中,想要打开已经存在的excel的xls文件,然后在最后新的一行的数据. 折腾过程 1.找到了参考资料: writing to existing workbook using xlwt 其实是没有直接实现: 打开已有的excel文件,然后在文件最后写入,添加新数据 的函数的. 只不过,可以利用: Working with Excel Files in Python 中的库,组合实现. 2. writing to existing workbook using xlwt 给出了示

[转]用Python读写Excel文件

转自:http://www.gocalf.com/blog/python-read-write-excel.html#xlrd-xlwt 虽然天天跟数据打交道,也频繁地使用Excel进行一些简单的数据处理和展示,但长期以来总是小心地避免用Python直接读写Excel文件.通常我都是把数据保存为以TAB分割的文本文件(TSV),再在Excel中进行导入或者直接复制粘贴. 前段时间做一个项目,却不得不使用Python直接生成Excel文件,后来随着需求的变化,还要对已有的Excel文件进行读取.在

基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能

思路: 1.首先,页面前端,上传附件,提交给后台,并带一个随机性的参数(可以用时间戳): 2.后端接收附件,做一系列的逻辑处理,无误后,将对应的文件存储在上传的目录下: 3.然后前端,上传附件成功后,进行请求后端,读取数据,后端接口对应将附件数据读取出来,前端进行显示(ajax请求): 4.前端展示数据,用户对数据检测无误,点击保存(ajax请求后端保存代码的接口),当然也可以有选择性的选择某些数据记录进行保存,楼主这里做的是全部保存(后端处理接口,自动过滤重复数据): 5.拿到对应的所需有用数