ASP.NET Aries 高级开发教程:Excel导入之代码编写(番外篇)

栏目: ASP.NET · 发布时间: 6年前

内容简介:以许框架提供的导入配置功能,已经能解决95%以上的导入情况,但有些情况总归还是得代码来解决。本篇介绍与导入相关的代码。如果不知道在哪写代码,看:

前言:

以许框架提供的导入配置功能,已经能解决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中补点代码就可以了。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

人人都是产品经理

人人都是产品经理

苏杰 / 电子工业出版社 / 2012-6 / 45.00元

本书为《人人都是产品经理》的升级版,是写给“1到3岁的产品经理”的书,适合刚入门的产品经理、产品规划师、需求分析师,以及对做产品感兴趣的学生,用户体验、市场运营、技术部门的朋友们,特别是互联网、软件行业。作为一名“4岁的产品经理”,作者讲述了过去3年的经历与体会,与前辈们的书不同,本书就像你走到作者身边,说“嗨,哥们!晚上有空吃个饭吗,随便聊聊做产品的事吧”,然后作者说“好啊”。 书名叫“......一起来看看 《人人都是产品经理》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

MD5 加密
MD5 加密

MD5 加密工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具