网站首页 > 基础教程 正文
1. 前言
本章是完善用户管理的一个小功能---导入数据,本章将使用第三方库Magicodes.IE.Excel.AspNetCore。
2. 类库简介
Magicodes.IE.Excel.AspNetCore库是心莱科技麦扣出品的一个支持Excel导入导出的功能。有兴趣的同学可以去搜索一下。类库是支持Dto导入导出以及动态导出,支持Excel、Word、Pdf和Html功能较多。不过作者维护的Github上的仓库。但是该库有个缺点是Excel导入不支持“.xls”文件,即不支持Excel97-2003。也许未来可以支持。
3. 代码示例
3.1 安装库Magicodes.IE.Excel.AspNetCore
我们仅演示使用Excel来完成学生数据的导入。我们需要在已准备好的工程中安装以下包,参考如下所示:
3.2 创建导入Student
创建导入类Student.ts并设置必要的属性
如上述代码所示,我们定义了以上学生数据类,主要注意事项如下
- ExcelImporter特性可以设置一些导入的全局设置,比如是否标注错误、导入Sheet名称(如不设置则自动获取第一个)、截止读取的列数、表头位置。
- 支持常用的数据验证设置,比如必填、最大长度。
- 支持数据重复校验,比如身份证号码。见ImporterHeader特性的IsAllowRepeat设置。
- 支持列头设置,将ImporterHeader的Name属性。除此之外,ImporterHeader还支持自动过滤空格(默认启用)、处理掉所有的空格、列索引等。
- 对数据列启用了忽略设置,见SchoolId的”[ImporterHeader(IsIgnore = true)]”。
- 使用了值映射,见“Gender”属性。启用值映射之后,将不会从枚举定义中获取值映射。
- 支持枚举,支持从枚举的Display、Description特性中获取值映射。
3.3 注册导入接口
创建在项目FlyingHat.Extensions中创建OfficeService.cs类并单例注册IExcelImporter
打开Program.cs中写入builder.Services.AddOfficeService();
builder.Services.AddOfficeService();
3.4 生成导入模板并填充数据
通过构造函数注入 IExcelImporter ,然后开始编写导入功能,在导入之前是不是得准备一份模板?对于我们,手写模板?这是不存在的。Magicodes.IE.Excel.AspNetCore封装了根据DTO自动生成Excel导入模板的方法,我们可以直接调用。这里我们来看下导入的相关方法。
通过导出的文件完成数据填充后导入到数据库
3.5 前端代码
界面展示:
JS代码展示:
注意:
popup.panelWebBtn是我封装的一个方法,您可以下载源码并查看。关于数据错误提示,我是返回前5项,这样前端页面也容易展示,这个上传后的逻辑可以根据实际情况而修改。
结语
本章实现了Excel文件的导入导出,仅仅是类库的简单使用介绍,当然导入的方式也有其他类库例如NPOI等。详细功能请获取源码查看。各位同学在阅读实践过程中有看不懂或有其他想法的可以在评论区留言或者私信。教程有帮助的话请各位同学帮忙评论点赞关注三连,感谢大家!
----------------------------------------------------
私信: 校园图书管理系统 可以获取Gitee的链接
猜你喜欢
- 2024-12-28 CSnakes:在.NET项目中嵌入Python代码的工具
- 2024-12-28 巧用泛型设计模式,提升代码质量新高度
- 2024-12-28 巅峰对决!Spring Boot VS .NET 6 巅峰对决之干碎龙王短剧全集完整版第5集
- 2024-12-28 基于C#开发的物联网设备通讯协议客户端终身开源免费
- 2024-12-28 C# Flurl 库浅析(一) c#folderbrowserdialog
- 2024-12-28 C# Lazy的缺点 c#的介绍
- 2024-12-28 微服务——webapi实现,脱离iis,脱离tomcat
- 2024-12-28 231.C# 跨平台服务开发 c++跨平台开发
- 2024-12-28 C# 和 .NET 开发的 10 种基本模式
- 2024-12-28 基于C# 开发的物联网设备通讯协议客户端
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)