銀行業務-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、表的拆分就是把信息進行展開,使每一行數據都包含明確的數據信息
銀行業務-Excel文件的拆分邏輯