1. 程式人生 > >銀行業務-Excel文件的拆分邏輯

銀行業務-Excel文件的拆分邏輯

要求 二維 不包含 原始的 blog 預測 文件表 二級 一個

一、問題:

  隨著銀行業務數據量的急劇增加,原始的人力統計數據已經不能滿足要求,

  需要開發一款可以實現自動化數據統計的系統平臺,進行數據的采集、加工、過濾、統計、預測

  其中數據采集方式又以【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文件的拆分邏輯