国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

NPOI超簡單的導出導入

2019-11-14 13:52:54
字體:
來源:轉載
供稿:網友

 

首先說說,第一次遇到過匿名導出的那個時候是在我在北京第一家公司,簡單的聲明一個對象就可以導出,那時候感覺高大上,自己也想研究研究,但是因為頭將代碼后來加密了根本看不到。好吧,研究了研究放棄了,后來,因為個人原因離職了。

然后進入了一個外包公司,有個功能需求是導入,導出Excel的需求,當時不想復制粘貼簡單操作,也因為受到這家公司動態創建實體的代碼上的理解,也不喜歡同事導出時先保存到服務器的邏輯,便用NPOI重寫了一份幫助類。

因為時間太長了,更換了電腦,當時測試的Demo已經沒有了,我分拆出來一個吧。

實現功能:

注:功能目前只支持單Sheet

導入:支持List和DataTable格式,支持數據非空驗證。

導出:支持List和DataTable格式,支持Excel格式,支持匿名類List導出及簡單樣式操作。

定義Excel和實體類及DataTable的對應列實體,此實體主要是用于幫助定義導入導出時的字段對應關系。

及導入是非空驗證,導出時配置簡單樣式等。

下圖是主要類結構圖:

ExcelColumn是單元格的列定義的實體類;

ExCelColumns是列的集合定義列。

ExcelStream 是防止NPOI釋放操作,因為NPOI2開始至今Response到瀏覽器會出現錯誤,后來發現是因為內存釋放導致的。

NPOIExelHelper 是導入導出的調用方法。

clip_image001

clip_image003

clip_image004

clip_image006

幫助類的代碼不貼了,稍后傳上去各位自己下載,因當時開始的考慮與后來的考慮不一致導致代碼有部分重復,沒有做整理,諒解。

兩個導入節點配置,當然你也可以不用配置,那么導入的第一行的單元格直接對應實體類的列或DataTable的表格。

<?xml version="1.0" encoding="utf-8" ?>

<root>

<Inbound>

<!--默認讀取節點-->

<row height="20" title="入庫SN信息" sheetname="sheet1" ignoreerr="false">

<column key="庫房所在地" name="WarehouseName" />

<column key="采購訂單號" name="PurchaseNumber"></column>

<column key="批次編號" name="BatchNumber" required="true"></column>

<column key="CODE" name="Code" required="true"></column>

<column key="序列號" name="SN" required="true"></column>

<column key="Configid/Bom" name="ConfigId"></column>

<column key="產品描述" name="PRoductDescription"></column>

<column key="入庫數量" name="Amount"></column>

</row>

</Inbound>

<Outbound>

<row height="50" title="出庫SN信息" sheetname="sheet1" ignoreerr="false">

<column key="庫房所在地" name="WarehouseName" />

<column key="出庫單號" name="OutBoundNumber" required="true"></column>

<column key="合同號" name="ContractNumber"></column>

<column key="CODE" name="Code" required="true"></column>

<column key="序列號" name="SN" required="true"></column>

<column key="Configid/Bom" name="ConfigId"></column>

<column key="產品描述" name="ProductDescription"></column>

<column key="出庫數量" name="Amount"></column>

</row>

</Outbound>

</root>

其中ignoreerr是導入是是否忽略錯誤導入,一般只是否非空驗證錯誤。

required為此列是否非空驗證。

下面我們就做一個導入導出測試。因為本人不喜歡用DataTable,所以DataTable方式不做Demo。但是實體類里面支持Dt導入導出。

首先,聲明實體類:

clip_image007

配置導入導出XML:

clip_image008

導入代碼:

clip_image009

導出代碼:

clip_image011

clip_image013

源碼地址:下載鏈接


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 景德镇市| 轮台县| 梁河县| 兴海县| 隆安县| 湘潭市| 望谟县| 神木县| 海原县| 高陵县| 汉中市| 龙川县| 梁平县| 郴州市| 郯城县| 固安县| 建始县| 阳泉市| 自治县| 安义县| 永寿县| 洪洞县| 泰和县| 池州市| 牙克石市| 林甸县| 徐水县| 工布江达县| 商南县| 时尚| 共和县| 资溪县| 仲巴县| 阜南县| 江油市| 丘北县| 贺州市| 思南县| 天等县| 大庆市| 德昌县|