当前位置: 首页 > news >正文

.Net 基于MiniExcel的导入功能接口示例

 /// <summary>/// 导入/// </summary>/// <param name="formFile"></param>/// <returns></returns>[HttpPost("Import")]public async Task<ExecResult> Import(IFormFile formFile){try{if (formFile == null) throw new Exception("请选择文件导入!");var fileExt = Path.GetExtension(formFile.FileName);if (fileExt != ".xlsx") throw new Exception("请导入后缀名为.xlsx的Excel文件!");using var stream = new MemoryStream();formFile.CopyTo(stream);var maintainItems = new List<TpmMaintainItem>();var allItems = await _dbcontext.TpmMaintainItems.ToListAsync();var equipments = await _dbcontext.Equipment.ToListAsync();int num = 1;StringBuilder sb = new StringBuilder();foreach (IDictionary<string, object> row in stream.Query(true)){var equipmentCode = row["设备编码"];var name = row["维保项名称"];var cycle = row["维保项周期(天)"];var content = row["维保项内容"];var isMustCheck = row["是否必检"];var advanceDays = row["提前天数"];if (equipmentCode == null) sb.AppendLine($"第{num}行设备编码不存在!");if (name == null) sb.AppendLine($"第{num}行维保项名称不能为空!");if (cycle == null) sb.AppendLine($"第{num}行维保项周期(天)不能为空!");if (content == null) sb.AppendLine($"第{num}行维保项内容不能为空!");if (isMustCheck == null){sb.AppendLine($"第{num}行是否必检不能为空!");}else if(!(isMustCheck.ToString() == "是" || isMustCheck.ToString() == "否")){sb.AppendLine($"第{num}行是否必检为非法字符,只能填写是或否!");}if (advanceDays == null) sb.AppendLine($"第{num}行提前天数不能为空!");var equipment = equipments.FirstOrDefault(s=>s.EquipmentCode == equipmentCode.ToString());if(equipment == null) sb.AppendLine($"第{num}行设备编码:{equipmentCode}不存在!");var maintainItem = new TpmMaintainItem(){EquipmentId = Convert.ToInt32(equipment?.EquipmentID),Name = name.ToString(),Cycle = Convert.ToInt32(cycle),Content = content.ToString(),IsMustCheck = string.Equals(isMustCheck.ToString(), "是") ? true : false,AdvanceDays = Convert.ToInt32(advanceDays),CreateTime = DateTime.Now};if (allItems.Any(s => s.Name == maintainItem.Name))sb.AppendLine($"第{num}行数据已存在!");if(maintainItems.Any(s => s.Name == maintainItem.Name))sb.AppendLine($"第{num}行数据重复!");maintainItems.Add(maintainItem);num++;}if(sb.Length > 0){throw new Exception(sb.ToString());}else{await _dbcontext.TpmMaintainItems.AddRangeAsync(maintainItems);await _dbcontext.SaveChangesAsync();}return new ExecResult(true, "");}catch (Exception ex){_logger.LogError(ex, "");return new ExecResult(false, "", ex.Message);}}
http://www.lryc.cn/news/362508.html

相关文章:

  • 流量焦虑?别担心,Xinstall一站式App推广解决方案来了!
  • 降薪潮要开始了么?
  • 网络服务DHCP的安装
  • SELinux:安全增强型Linux
  • .NET Redis限制接口请求频率 滑动窗口算法
  • Java List数据结构与常用方法
  • Docker搭建redis-cluster集群
  • 实验室类管理平台LIMS系统的ui设计实例
  • <PLC><西门子><工控>西门子博图V18中使用SCL语言编写一个CRC16-modbus校验程序
  • Linux - 文件管理高级 find、grep
  • DOS编程入门:探索基础、深入技巧与实战应用
  • 创建线程的技术难点
  • Android ViewPager和ViewPager2的区别
  • Oracle数据库面试题-3
  • 21.过拟合和欠拟合示例
  • 使用import语句导入模块
  • 一台FreeBSD笔记本突然鼠标乱动=>pf防火墙设置@FreeBSD
  • 身份证OCR识别功能介绍
  • 一文看懂:MES定义和功能是什么,以及在数字化工厂的应用
  • 对 SQL 说“不”~
  • 【爱空间_登录安全分析报告】
  • web前端三大主流框架
  • git获取的项目无法运行
  • java 原生http服务器 测试JS前端ajax访问实现跨域
  • 捋一捋C++中的逻辑运算(一)——表达式逻辑运算
  • qcom 平台系统签名流程
  • 从零开始实现自己的串口调试助手(5) -实现HEX显示/发送/接收
  • 【计算机毕设】基于SpringBoot的民宿在线预定平台设计与实现 - 源码免费(私信领取)
  • 大数据—数据分析概论
  • centos7下卸载MySQL,Oracle数据库