首页 > 其他分享 >SimpleAdmin手摸手教学之:导入导出

SimpleAdmin手摸手教学之:导入导出

时间:2023-04-08 14:23:12浏览次数:36  
标签:SimpleAdmin 导出 excel 用户 导入 手摸 数据 模板

一、说明

导入导出是系统中经常需要用到的功能,大部分系统的导入功能都是上传一个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,详情参考用户管理页面。

标签:SimpleAdmin,导出,excel,用户,导入,手摸,数据,模板
From: https://www.cnblogs.com/huguodong/p/17298472.html

相关文章

  • 导入 three.js 库
    发现导入three.js文件的时候,官方文档的写法是:import*asTHREEfrom'three';我并不清除three指的是文件夹还是js文件,如果是后者,应当加上.js后缀由于我并没有使用任何框架,我发现只有导入Three.js文件才能运行:import*asTHREEfrom'../node_modules/three/src......
  • TS 导入导出那些事
    前言最近用TypeScript写npm包,各种模块、命名空间、全局定义等等扰得我睡不着觉。我便苦心研究,总结了几个比较冷门的,国内貌似基本上找不到资料的导入导出用法,顺便在其中又插入一些不那么冷门的用法,于是本篇文章来了。因为一开始也没想做成大全,可能之后还会继续更新吧。目录......
  • vue导入处理Excel表格详解
    https://blog.csdn.net/m0_46309087/article/details/125022676 目录1.前言2.vue导入Excel表格2.1使用ElementUI中的upload组件2.2使用input文件上传3.总体代码与效果4.总结1.前言  最近遇到前端导入并处理excel表格的情况,趁此机会刚好研究一下vue导入并处理excel数据;......
  • IDEA导入普通web项目
    公司项目是普通web项目,导入使用IDEA启动需要一定的步骤,在此做下记录在IDEA中依次点击File->New->ProjectfromExistingSources选中项目目录之后直接下一步下一步下一步。然后点击File->ProjectStructure在Project面板修改SDK版本在Modules面板中的Sources面板把res......
  • spring导入第三方资源对应的配置类
      importcom.alibaba.druid.pool.DruidDataSource;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.PropertySource;@PropertySource("classpa......
  • SimpleAdmin手摸手教学之:插件管理
    一、前言在2.0的架构设计中,引入了插件的概念,目的就是为了解决代码臃肿问题,随着系统功能越来越多,System层的代码也越来越多,之前是以文件夹的方式区分功能模块,这样的话代码就过于集中,想找到某一个功能模块的代码就要翻好几个文件夹,不利于以后的开发和维护。所以在新的架构中,我将部......
  • 调用kibana API操作,导入导出仪表板和索引
    导出导出ChatGPT:Java1importjava.io.*;2importjava.net.*;3importorg.apache.commons.io.IOUtils;4importorg.json.JSONObject;56publicclassExportAndImportKibanaDashboardAndIndex{7publicstaticvoidmain(String[]args)throwsExcepti......
  • python中动态导入文件的方法
    1.简介在实际项目中,我们可能需要在执行代码的过程中动态导入包并执行包中的相应内容,通常情况下,我们可能会将所需导入的包及对象以字符串的形式传入,例如test.test.run,下面将介绍如何动态导入。假设存在如下包:其中test.py的内容如下:count=1defrun():print("run")......
  • 导入jar包到本地的maven仓库
    当我们需要用maven来管理依赖但是又没有在线的仓库可用时,可以直接导入到本地仓库来管理依赖。在cmd中执行一下命令:mvninstall:install-file"-Dfile=testjar1-1.2-SNAPSHOT.jar""-DgroupId=com.test.test""-DartifactId=testjar1""-Dversion=1.2-SNAPSHOT""-Dpackaging=......
  • vue excel导入,导出
    @GetMapping("/exportExample")@Inner(false)//publicRexportExample(Integercs,Stringcs2){publicvoidexportExample(MeterWatermeterWater,HttpServletResponseresponse)throwsIOException{//查询所有用户Map<String,......