我实现了XAF项目中Excel数据的导入,使用Devexpress 新出的spreadsheet控件,可能也不新了吧:D

好,先看一下效果图:下图是Web版本的。

下面是win版:

功能说明:

支持从Excel任意版本导入数据,可以使用 打开文件功能选择现有的文件,没有模板时,请来到上图界面中,另存为Excel到本地,往模板上填加数据。

导入时使用了显示名称进行匹配字段,所以字段部分不要修改。

导入时会使用你在写好的验证规则。

支持Win+Web两个版本。

使用方法:

第一步:将Admiral.ImportData模块拖到你的项目的模块中去,上图为例,我将把Admiral.ImportData拖到图中A项目中,即MFBI.Module中去。

第二步:将Admiral.ImportData.Web 拖到B中。

第三步:将Admiral.ImportData.Win拖到C中。

你不知道模块在哪里?请看下图:

先打开solution 中的Module.cs, 然后从toolbox拖动ImportDataModule到Required Modules中。

当然这是把源码直接放到项目中去的方法,如果想直接使用DLL,可以编译好后,在toolbox中填加选择项,选择路径后,再进行拖动。

再来看看代码中的设置:

以下代码中有两处标红的,第一必须实现IImportData接口才可能导入,这个接口是空的,不用实现。DomainComponent也可以这样使用。

对于普通的字段,没有其他设置。

对于引用型字段,需要[ImportDefaultFilterCriteria("编码=?")]这样,来设置将来查找引用类型的值时,用什么条件进行查找,当然问号会被替换为Excel中真实的值。

    [XafDisplayName("销量明细")]
[NavigationItem("销售模块")]
public class 销量明细 : BaseObject,IImportData
{
public 销量明细(Session s) : base(s)
{ } private 订单 _订单;
[Association] [ImportDefaultFilterCriteria("编码=?")]
public 订单 订单
{
get { return _订单; }
set { SetPropertyValue("订单", ref _订单, value); }
} ......
}

当前模块还比较简单 ,以后会慢慢完善。

20160128已经更新了支持win下面除了ribbon以外其他的界面类型。

2016-3-17 将源码发布到github.

地址:https://github.com/tylike/Admiral.ImportData

修复了几个小BUG。

增加了更新导入功能,在业务对象上面写[UpdateImport("属性名称")],其中属性名称是指,在导入时,使用哪个属性的值 Excel->库中的 进行比较,来确定此对象是否存在。

增加了[ImportOptions(false)]属性,可以写在属性或字段上面,设置为false时,即在导入时不显示此字段。

增加给Winform增加了图标。

导入完成后,在Excel中给出了提示信息,成功或不成功。

在查找引用属性时,如果没有使用ImportDefaultFilterCriteria属性进行设置,则按如下优先级进行:

1.看主键是否是非自动生成的,是,则使用主键查找。

2.看引用类上面是否有[RuleUniqueValue]标记的属性,有则使用。

3.看DefaultProperty是否有设置,有则使用。

2016-7-5日更新说明:

增加了FindObjectProviderAttribute,用于提升性能.

需要加速的类上面写这个Attribute即可.

 2016-7-14日更新说明:

Excel导入模块增加了DC的支持,WEB下面可用。增加了Nullable类型的支持,并补全了数字类型的支持。

为了支持web下面新风格皮肤,增加了两个变量:

这两个变量可以在global.asax中进行设置:

1.ASPxSpreadsheetPropertyEditor.IsNewStyle = true; //如果使用了新风格时,需要设置此变量.

2.ASPxSpreadsheetPropertyEditor.SkinName="Aqua"; //由于Spreadsheet控件没有支持新风格,所以这里可以可以手工指定另一个风格,否则显示界面混乱

转载请注明出处。多谢!

XAF Excel数据导入模块使用说明与源码的更多相关文章

  1. 批量Excel数据导入Oracle数据库

    由于一直基于Oracle数据库上做开发,因此常常会需要把大量的Excel数据导入到Oracle数据库中,其实如果从事SqlServer数据库的开发,那么思路也是一样的,本文主要介绍如何导入Excel数 ...

  2. kettle将Excel数据导入oracle

    导读 Excel数据导入Oracle数据库的方法: 1.使用PL SQL 工具附带的功能,效率比较低 可参考这篇文章的介绍:http://www.2cto.com/database/201212/17 ...

  3. 效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】) 转

    效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中[附源代码下载])    本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较   ...

  4. Java代码实现excel数据导入到Oracle

    1.首先需要两个jar包jxl.jar,ojdbc.jar(注意版本,版本不合适会报版本错误)2.代码: Java代码   import java.io.File; import java.io.Fi ...

  5. 将Excel数据导入mysql数据库的几种方法

    将Excel数据导入mysql数据库的几种方法 “我的面试感悟”有奖征文大赛结果揭晓! 前几天需要将Excel表格中的数据导入到mysql数据库中,在网上查了半天,研究了半天,总结出以下几种方法,下面 ...

  6. 如何把excel数据导入数据库

    这里介绍2种把excel数据导入oracle数据库的方法. 1. 在excel中生成sql语句. 1)在数据列的右侧,第一行的任何位置输入="insert into table(xx,yyy ...

  7. excel 数据导入数据表

    环境: Windows server 2012  rm sql server  2012 excel 数据导入数据表 INSERT INTO [dbo].[AdminUser] SELECT [Adm ...

  8. C#使用oledb方式将excel数据导入到datagridview后数据被截断为 255 个字符

    问题描述:在使用oledb方式将excel数据导入到datagridview中,在datagridview单元格中的数据没有显示全,似乎只截取了数据源中的一段 解决方案:1.关于该问题,微软官方答案: ...

  9. excel数据导入到sqlserver中---------工作笔记

    调用页面: using System; using System.Collections.Generic; using System.Linq; using System.Web; using Sys ...

随机推荐

  1. E2PROM的尺寸

    买的E2PROM是128*8bit的, 就是只能存储128个byte, 妈的, 买小了. 实际需要的是10句, 可能加两个特殊句, "新手"跟"故障", 一共1 ...

  2. shell获取目录下最新的文件,文件是以日期命名

    如果你为每个文件按日期命名的格式都一致的话,那么 "ls -l" 命令列出的文件列表就是默认按文件名称(日期先后)排序的.那么最后一个就是最新的,文件名可以用以下方式获取.file ...

  3. tar 报错gzip: stdin: not in gzip format

    今天在linux下 用tar -zxvf xxx.tar.bz2 然后就报这个错. gzip: stdin: not in gzip formattar: Child returned status ...

  4. javaBean的使用方法;

    在jsp页面中使用javaBean:三个标签: <jsp:useBean>标签 <jsp:setProperty>标签 <jsp:getProperty>标签 首先 ...

  5. hdu1024 Max Sum Plus Plus

    动态规划,给定长度为n(≤1e6)的整数数组和整数m,选取m个连续且两两无交集的子区间,求所有方案中使得区间和最大的最大值. dp[i][j]表示结束位置(最后一个区间最后一个元素的位置)为i且选取区 ...

  6. Power Network 分类: POJ 2015-07-29 13:55 3人阅读 评论(0) 收藏

    Power Network Time Limit: 2000MS Memory Limit: 32768K Total Submissions: 24867 Accepted: 12958 Descr ...

  7. 排序练习——找出前m大的数字 分类: 排序 2015-06-08 09:33 21人阅读 评论(0) 收藏

    排序练习--找出前m大的数字 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 给定n个数字,找出前m大的数字.   输入  多组输 ...

  8. Uva 10003,切木棍

    题目链接:https://uva.onlinejudge.org/external/100/10003.pdf 题意: L长的木棍,给n个切割点,切成n+1部分,每次切割的时候的费用等于切割时的长度. ...

  9. FTP协议标准命令

    FTP:文件传输协议(File Transfer Protocol) 文件传输协议(FTP)使得主机间可以共享文件.FTP 使用 TCP 生成一个虚拟连接用于控制信息,然后再生成一个单独的 TCP 连 ...

  10. WDCP控制面板如何安装PDO_mysql组件

    http://osacar.iteye.com/blog/2098431 执行wget -c http://down.wdlinux.cn/in/pdo_mysql_ins.sh再执行chmod 75 ...