C# .netcore NPOI庫 實現報表的列自適應刪減

热慢黑布發表於2024-09-11

實際需求:業務上的一個需求,資料庫表A中的B欄位存放的是該條資料的一些標籤,標籤存在兩級【即一級標籤和二級標籤】, 現在要是實現將這些標籤統計到報表中,一級標籤作為表頭,二級標籤作為填充值。
由於之前的報表每增加一個列都需要去資料庫表中增加這個欄位名稱,然後程式碼中寫統計邏輯,這樣才能實現, 這樣做的好處是隻需要後端就可以完成報表的一個欄位的增加,不需要等待前端去增加這了列名了, 後來的低程式碼就是這樣的邏輯,可以簡單的編寫sql,去實現統計邏輯。實現快速開發,節省開發時間。
迴歸正題,由於每個資料的標籤是不確定的,那就導致了每個每個資料要統計的列是不一樣的,這裡的做法是將全部的標籤都進行增加統計【使用者不需要的話還有個功能取消掉某列的統計就可以了】,當使用者新增一個標籤的時候,只要去檢視報表,檢測到這個標籤的名稱不在列統計當中,就會自動的去新增一條列統計欄位,每條資料迴圈的時候要將給其賦值,有對應的二級標籤那就展示二級標籤名稱,沒有的話那也要新增一個列,但是資料填寫空字串。【這一步主要是防止在下載報表的時候報錯,以防列數對應不上而報錯】。
有兩個核心的點,第一個:統計的列名為什麼還要在資料庫表中再存一份? 其實也可以將要統計的列名放入程式碼中寫死,同樣可以實現報表資料的展示,但是所有的客戶都會展示這麼多的列統計,沒有辦法支援各個客戶對統計列的篩選【這個就是原因】。
第二個:程式碼中的列資料如何和資料庫表中的列名對應上的? 資料庫表中存入統計列的列中文名和列英文名, 在程式碼中一個欄位的定義肯定是英文的,這樣就可以知道如何賦值了,【列中文名是給客戶展示的】,其中 。。。 有時間再繼續

相關文章