1. 程式人生 > >ASP.NET Aries 高階開發教程:Excel匯入之程式碼編寫(番外篇)

ASP.NET Aries 高階開發教程:Excel匯入之程式碼編寫(番外篇)

前言:

以許框架提供的匯入配置功能,已經能解決95%以上的匯入情況,但有些情況總歸還是得程式碼來解決。

本篇介紹與匯入相關的程式碼。

1、前端追加匯入時Post的引數:

var grid = new AR.DataGrid('V_Test', 'Demo_TestA');

//......

 /* 匯入前追加一些Post引數 */
    grid.ToolBar.BtnImport.onBeforeExecute = function (para)
    {
        alert("匯入的引數:" + JSON.stringify(para));
        para.Name = "追加一個名字,Excel匯入配置的格式化可以配置@Name";
        para.Para2 = "隨意了...";
    }

2、後端程式碼攔截匯入事件:

 public override ImportResult BeforeImport(MDataTable dt, MDataRow excelInfo, out string msg)
        {
            if (dt.TableName == "V_UserList")//只處理特定的(檢視物件)表
            {
                //引數說明:
                //dt 從Excel導讀出來的資料表,列頭還是中文的
                //excelInfo 高階Excel配置(若有配置的話,沒配置則為null)
msg = "錯誤資訊,只有返回false時才有用"; if (msg == "自己處理完邏輯") { //自己補充邏輯 bool result = FormatExcel(dt, excelInfo);//呼叫系統方法,把列頭中文翻譯成英文,把下拉專案的中文翻譯成值 if (result) {
//自己寫插入資料庫的方法。 //result = ExcelConfig.AcceptChanges(dt, excelInfo, ObjName);// dt.AcceptChanges(AcceptOp.Auto); } return ImportResult.True; } else if (msg == "自己處理完邏輯,中止執行,返回處理失敗") { return ImportResult.True; } else { //自已只處理了dt的裡資料。 return ImportResult.Continue;//繼續讓框架處理下去 } } return base.BeforeImport(dt,excelInfo,out msg); }

框架的提供的核心方法有兩個:

FormatExcel:

內部處理流程:

1、將中文列頭翻譯成英文。

2、將鍵值對的中文轉換成數值。

3、處理一些預設值設定問題。

4、完成基礎的資料驗證(必填、是否為Null,長度、資料型別)

ExcelConfig.AcceptChanges(dt, excelInfo, ObjName);

系統會根據高階Excel配置項的內容進行復雜的處理,並根據配置決定是更新還是插入。

對於ExcelConfig。AcceptChanges的方法,還多了一個高階擴充套件,讓你可以在每條資料發生動作的前後可以處理些事情。

具體看:Aries.Logic專案下的ExcelConfigExtend.cs檔案。

總結說明:

如果是要增加資料驗證、或者補齊資料,那麼重寫:BeforeImport事件,就很必要。

如果是每行資料發生的前後,需要做點事情,那麼,在Aries.Logic.ExcelConfigExtend中補點程式碼就可以了。