• 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、后端代码拦截导入事件:

    如果不知道在哪写代码,看:ASP.NET Aries 开源开发框架:开发指南(一) 了解最后框架的请求流程。

     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中补点代码就可以了。

  • 相关阅读:
    5059 一起去打CS
    2439 降雨量
    vijos P1037搭建双塔
    4979 数塔
    2596 售货员的难题
    P2342 叠积木
    1540 银河英雄传说
    1051 接龙游戏
    hdu1251
    洛谷P1717 钓鱼
  • 原文地址:https://www.cnblogs.com/cyq1162/p/9571085.html
Copyright © 2020-2023  润新知