一、说明
导入导出
是系统中经常需要用到的功能,大部分系统的导入功能都是上传一个excel文件,然后导入成功就提示导入成功,失败就提示导入失败,顶多返回一个导入结果的excel,非常的不直观。如何设计一个优雅的导入让用户能非常直观的在数据还没导入进系统的时候看到有哪些数据是可以导入的,有哪些是会导入失败的就很重要,本着以人为本的原则,我开发了一个基于Magicodes.IE.Excel
的批量导入组件,支持导入预览,导入错误提示,分批导入等功能,非常好用,详细代码可以查看SimpleAdmin.Plugin.ImportExport
插件。具体实现可以参考用户管理
功能
二、导入数据
新建一个Dto实体继承ImportTemplateInput
,这个实体是我们的导入模板实体。
构造函数注入IImportExportService
新建获取模板方法,系统会根据传入的dto类自动生成excel文件返回。
前端引用批量导入组件,参考用户管理
,点击用户导入
按钮,下载导入模板。
系统会自动下载excel模板文件
回到后端,用户在模板中填入数据并上传文件后,需要预览导入的数据,系统要读取excel文件并判断用户输入的数据是否合法,一个是通过Magicodes.IE.Excel
去判断,还有一部分是根据业务自己去判断。
后端读取数据并校验之后,返回预览结果,支持到字段的错误提示,非常智能。并且可以在现有结果基础上修改,根据提示修改为正确的值。
前端点击继续
按钮,提示是否确认导入,点击确定后开始导入数据。在后端,我们同样的需要再检查一遍数据格式是否正确,并通过GetImportResultPreview
方法获取导入结果。最后转为数据库实体并插入数据库。
导入结果返回给前端,可以看到导入数量,成功导入和导入失败数量。
点击查看错误
按钮可以查看哪些数据是错误的。
三、大数据导入
导入组件默认数据量小于1000的时候是全量导入,如果需要分批导入只需要设置导入组件的max-upload-count
属性即可。
四、数据导入
数据导出毕竟简单,直接通过后台导出当前查询条件的所有数据,首先需要一个Dto配置导出的excel格式信息。
导出方法也很简单,查询数据,转为dto,导出excel文件。
点击页面导出按钮,即可导出结果excel,详情参考用户管理
页面。