免费A级毛片无码专区网站-成人国产精品视频一区二区-啊 日出水了 用力乖乖在线-国产黑色丝袜在线观看下-天天操美女夜夜操美女-日韩网站在线观看中文字幕-AV高清hd片XXX国产-亚洲av中文字字幕乱码综合-搬开女人下面使劲插视频

十六 企業(yè)級自定義表單引擎解決方案--Excel導入導出

Excel對于后端管理系統(tǒng)來說 , 永遠都是繞不開的話題 , 開發(fā)Excel導入導出功能往往都比較麻煩 , 因為涉及到Excel導入模板制作、Excel表格數(shù)據(jù)與系統(tǒng)數(shù)據(jù)庫表字段映射、Excel導入數(shù)據(jù)驗證、驗證錯誤數(shù)據(jù)返回給用戶的交互、表格數(shù)據(jù)唯一判斷(不存在新增 , 存在則修改) , 復雜一些的還會涉及到多表頭、合并單元格情況 , 可能還會涉及到Excel關(guān)聯(lián)多張數(shù)據(jù)表的情況 。對于關(guān)聯(lián)多張表的情況 , 處理這種Excel映射出來的數(shù)據(jù)必須手動碼代碼處理 , 這個是沒辦法的 , 但是對于其他常規(guī)導入導出以及常規(guī)的Excel操作 , 完全可以進行結(jié)構(gòu)化的封裝處理 , 理想的情況下可以做到零代碼實現(xiàn) 。我這里采用的是NOPI來實現(xiàn)的 。
這里是根據(jù)表單模板自動生成的Excel導入導出功能 , 可以開源網(wǎng)站地址查看 。

十六 企業(yè)級自定義表單引擎解決方案--Excel導入導出

文章插圖
定義模板每個字段對應Excel里面的一列 , 可以定義字段名稱、列名稱、字段類型、是否必填、列表頭備注信息、導入驗證類型等關(guān)鍵信息 , 定義好信息之后 , 導入導出所有邏輯都是圍繞著這個模板來進行的 , 把所有邏輯封裝到一個組件中 , 那么代碼只需要處理常規(guī)的集合對象即可 。
public class ExcelTemplate{/// <summary>/// 字段名稱/// </summary>public string Field { get; set; }/// <summary>/// 列稱/// </summary>public string Name { get; set; }/// <summary>/// 字段類型/// </summary>public EFieldType FieldType { get; set; }/// <summary>/// 列寬(顯示多少個字符)/// </summary>public int CellLength { get; set; }/// <summary>/// 導出模版?zhèn)渥?// </summary>public string ExportComments { get; set; }/// <summary>/// 導入 是否必填/// </summary>public bool IsRequred { get; set; }/// <summary>/// 導入 驗證類型/// </summary>public EValidateType ValidateType { get; set; }/// <summary>/// 導入 驗證類型為String時 , 驗證長度 , 為Regular , 為正則表達式/// </summary>public string ValidateValue { get; set; }/// <summary>/// All = 1,OnlyForExport = 2(只在導入導出Excel使用),OnlyForImport = 3(只在導入導入Excel使用)/// </summary>public ETemplateForUse? TemplateForUse { get; set; }}配置示例:
"excelTemplate": [{"name": "字符","field": "stringField","fieldType": 5,"isRequred": true,"validateType": 0},{"name": "日期字段","field": "dateTimeField","fieldType": 7,"validateType": 10},{"name": "字典字段","field": "dictField","fieldType": 5,"validateType": 11},{"name": "數(shù)字","field": "intField","fieldType": 1,"validateType": 1},{"name": "長字符","field": "textField","fieldType": 5,"validateType": 0},{"name": "編號","field": "autoNoField","fieldType": 5,"templateForUse": 2,"validateType": 0},{"name": "浮點字段","field": "decimalField","fieldType": 2,"validateType": 3},{"name": "日期字段2","field": "dateField","fieldType": 6,"validateType": 9}]導入常規(guī)驗證在模板中可以定義字段的約束信息 , 比如字段類型、長度、驗證表達式等 , 在導入的時候 , 組件自動驗證對應字段是否滿足約束 。
導入自定義驗證對于一些業(yè)務 , 常規(guī)驗證不能滿足情況時 , 組件可以允許用戶傳入驗證委托函數(shù) , 自定義驗證邏輯 。
導入錯誤生成錯誤Excel導入Excel出錯時 , 組件輸出一個錯誤Excel , 包括導入統(tǒng)計信息 , 導入出錯行的原始數(shù)據(jù) , 出錯的行號 , 出錯行的具體出錯信息 , 如:

經(jīng)驗總結(jié)擴展閱讀