XAF Excel Importer

科技资讯 投稿 5900 0 评论

XAF Excel Importer

开源项目地址:https://gitee.com/easyxaf/excel-importer

前言

思路

Excel导入本质是数据的映射,就是将Excel的行映射到XAF的BO对象中,这中间要涉及到数据类型的转换,如数值、日期、布尔、枚举、引用等类型,同时还要有数据的校验,由于Excel输入的灵活性及随意性,可以提高输入的方便性,但输入的准确性会大打折扣,所以数据的校验很重要。
结合XAF的特点,再加上Excel的灵活性,本Excel导入模块,优先考虑了采用XAF的Model进行Excel导入模板的创建,由于Model可以在设计时及运行时创建,这样可以解决Excel导入模板的灵活性,再通过XAF的条件表达式(Criteria)来实现数据的验证及数据的转换,基本可以解决大部分Excel导入的需求。

使用

本模块支持XPO及EFCore,由于Blazor项目需要一个存储临时文件的实体,而XPO与EFCore的实体类是不一样的,模块中并没包含这个实体(ExcelImporterTempFile),而是将其放到了示例模块项目中,如下图

示例

下面通过一个简单的示例来讲解Excel导入模块的功能

简易Excel模板制作

导出的Excel模板

编辑后的Excel模板

导入Excel数据

    模板制作
  • 导出模板
  • 编辑数据
  • 导入Excel

模板的有效性验证

Excel录入数据

设置

Excel模板中的下拉选择

在User中有一个IsActive属性,它的类型为布尔型,在本模块中布尔型默认会使用下拉选择,如果IsActive属性定义了CaptionForFalse及CaptionForTrue,则采用定义的文本,否则会采用'否'与'是',但同时我们也可以设置PredefinedValues属性,如非活动与活动

Excel模板的标头格式

Excel模板的标头文本

Excel模板中的列隐藏

只是进行了隐藏,用户可以轻松的显示出来,无法通过它隐藏数据

Excel模板中引用类型的下拉选择

忽略验证错误

必须包含的Excel工作表列

导入时的默认值表达式

列不显示在模板中

不更新模板中的列

列的值表达式

导出视图数据

主键的导入

导入数据方式

    同步(Synchronize),它不仅创建不存在的数据,同时还会更新已存在的数据(默认行为)
  • 仅创建(OnlyCreation),它只创建不存在的数据,已存在的数据不会更新
  • 仅更新(OnlyUpdate),不存在的数据不会创建,更新已存在的数据
  • 全创建(AllCreation),不管是否存在都会创建

验证失败展示

自定义数据验证

    数据类型的验证
  • 模板中定义的最大值,最小值
  • BO中定义的规则
  • 模板中自定义的规则

最后

https://www.cnblogs.com/haoxj/p/17419045.html

编程笔记 » XAF Excel Importer

赞同 (23) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽