{"id":20459308,"url":"https://github.com/tylike/admiral.importdata","last_synced_at":"2025-04-13T05:50:53.897Z","repository":{"id":115172786,"uuid":"54101683","full_name":"tylike/Admiral.ImportData","owner":"tylike","description":"XAF的excel导入模块","archived":false,"fork":false,"pushed_at":"2018-07-19T06:41:04.000Z","size":569,"stargazers_count":13,"open_issues_count":0,"forks_count":14,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-26T22:36:06.750Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tylike.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-03-17T08:35:31.000Z","updated_at":"2024-08-22T09:18:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"d3b71ef6-efbf-4cd3-b628-1fbfaa88a098","html_url":"https://github.com/tylike/Admiral.ImportData","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tylike%2FAdmiral.ImportData","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tylike%2FAdmiral.ImportData/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tylike%2FAdmiral.ImportData/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tylike%2FAdmiral.ImportData/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tylike","download_url":"https://codeload.github.com/tylike/Admiral.ImportData/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248670501,"owners_count":21142901,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-15T12:15:41.920Z","updated_at":"2025-04-13T05:50:53.839Z","avatar_url":"https://github.com/tylike.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Admiral.ImportData\n请看这里，有图：\nhttp://www.cnblogs.com/foreachlife/p/xafimportexcel.html\n\n我实现了XAF项目中Excel数据的导入，使用Devexpress 新出的spreadsheet控件，可能也不新了吧:D\n\n好，先看一下效果图：下图是Web版本的。\n\n\n\n下面是win版：\n\n\n\n \n\n功能说明：\n\n支持从Excel任意版本导入数据，可以使用 打开文件功能选择现有的文件，没有模板时，请来到上图界面中，另存为Excel到本地，往模板上填加数据。\n\n导入时使用了显示名称进行匹配字段，所以字段部分不要修改。\n\n导入时会使用你在写好的验证规则。\n\n支持Win+Web两个版本。\n\n使用方法：\n\n \n\n\n\n第一步：将Admiral.ImportData模块拖到你的项目的模块中去，上图为例，我将把Admiral.ImportData拖到图中A项目中，即MFBI.Module中去。\n\n第二步：将Admiral.ImportData.Web 拖到B中。\n\n第三步：将Admiral.ImportData.Win拖到C中。\n\n你不知道模块在哪里？请看下图：\n\n\n\n先打开solution 中的Module.cs, 然后从toolbox拖动ImportDataModule到Required Modules中。\n\n当然这是把源码直接放到项目中去的方法，如果想直接使用DLL,可以编译好后，在toolbox中填加选择项，选择路径后，再进行拖动。\n\n \n\n再来看看代码中的设置：\n\n以下代码中有两处标红的，第一必须实现IImportData接口才可能导入，这个接口是空的，不用实现。DomainComponent也可以这样使用。\n\n对于普通的字段，没有其他设置。\n\n对于引用型字段，需要[ImportDefaultFilterCriteria(\"编码=?\")]这样，来设置将来查找引用类型的值时，用什么条件进行查找，当然问号会被替换为Excel中真实的值。\n\n复制代码\n    [XafDisplayName(\"销量明细\")]\n    [NavigationItem(\"销售模块\")]\n    public class 销量明细 : BaseObject,IImportData\n    {\n        public 销量明细(Session s) : base(s)\n        {\n\n        }\n\n        private 订单 _订单;\n        [Association]\n\n        [ImportDefaultFilterCriteria(\"编码=?\")]\n        public 订单 订单\n        {\n            get { return _订单; }\n            set { SetPropertyValue(\"订单\", ref _订单, value); }\n        }\n\n        ......\n    }\n复制代码\n \n\n当前模块还比较简单 ，以后会慢慢完善。\n\n \n\n 20160128已经更新了支持win下面除了ribbon以外其他的界面类型。\n\n \n\n2016-3-17 将源码发布到github.\n\n地址：https://github.com/tylike/Admiral.ImportData\n\n修复了几个小BUG。\n\n增加了更新导入功能，在业务对象上面写[UpdateImport(\"属性名称\")]，其中属性名称是指，在导入时，使用哪个属性的值 Excel-\u003e库中的 进行比较，来确定此对象是否存在。\n\n增加了[ImportOptions(false)]属性，可以写在属性或字段上面，设置为false时，即在导入时不显示此字段。\n\n增加给Winform增加了图标。\n\n导入完成后，在Excel中给出了提示信息，成功或不成功。\n\n在查找引用属性时，如果没有使用ImportDefaultFilterCriteria属性进行设置，则按如下优先级进行：\n\n1.看主键是否是非自动生成的，是，则使用主键查找。\n\n2.看引用类上面是否有[RuleUniqueValue]标记的属性，有则使用。\n\n3.看DefaultProperty是否有设置，有则使用。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftylike%2Fadmiral.importdata","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftylike%2Fadmiral.importdata","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftylike%2Fadmiral.importdata/lists"}