项目经验之:再来一章:excel导入数据 封装成最棒的不容易!!!
我见过很的系统,包括OA,ERP,CRM等,在常用的功能当中,从外部导入数据是最常用到的。因为很多客户需要以excel的形式提供数据,,
这样的方式我们又如何做呢,
大家最常见的做法可能是这样的,在需要导入信息的界面提供一个模版,要求客户参照模块的形式提供数据,这是最常见的,也是用得最多的一种方式,如下图所示。。可能只有几个字段
我不能说这种方式不对。但我只说这种方式对于客户方来说是最不人性化的,也是最不理合的。不合理在几个方面
1,客户方提供的Excel数据有可能是文本文件,然后更名成 xls 结尾的文件
2,客户方提供的Excel数据的列表头,如 客户名称,姓名 这些他不叫 客户名称,可能 客户NAME 等 其它表头
3,客户方提供的Excel数据顺序也可能是不固定的
4,客户方提供的Excel数据有可能是空值,可能有些数据不合理,如手机号,电话等!
5,客户方提供的Excel数据过大
这些常见的问题,,大家在导入数据时又是如何处理呢???
好了,我就说说我最近在项目中做的导入思路吧
模拟客户方提供数据:
在点击导入时我做个层形式,将Excel数据取出来,与我要插入的表结构做一个映射关系!《到这时,大家可能有些印象,这不是就SQL中导入数据的一样操作吗?》
是的没错,我就是参照了SQL导入数据的实例而做的。。方便之处,大家就不用我说了,这里可能只是没有做到数据类型的转换。。
接下来点击确认保存,如这些数据出现问题,我会给出一个提示:
而到了这里,客户方就可以根据我提供的错误数据明细去排查他给出的Excel数据,这样不就是客户方想要的吗
所有的有关数据出错明细都打出来让客户去下载,,解决上面的几点客户方的要求。。
代码在接下有空的时间给出。。
项目经验之:再来一章:excel导入数据 封装成最棒的不容易!!!的更多相关文章
- Excel导入数据到Sql server 中出错:“文本被截断,或者一个或多个字符在目标代码页中没有匹配项”
从Excel导入数据到Sql server 时,由于表中的数据有的很长,导入时出现如下错误(如果数据不是很长,255内以内,则不会出现错误): 出错原因: SQL Server的导入导出为了确定数据表 ...
- C# Excel导入数据
表 表的创建脚本 CREATE TABLE [dbo].[TB_PROJECTS_New1]( , ) NOT NULL, ) NULL, ) NULL, , ) NULL, , ) NULL, , ...
- Open XML操作Excel导入数据
项目中发现使用OleDb(using System.Data.OleDb)相关对象处理Excel导入功能,不是很稳定经常出问题,需要把这个问题解决掉.项目组提出使用OpenXML来处理Excel的导入 ...
- C#实现Excel模板导出和从Excel导入数据
午休时间写了一个Demo关于Excel导入导出的简单练习 1.窗体 2.引用office命名空间 添加引用-程序集-扩展-Microsoft.Office.Interop.Excel 3.封装的Exc ...
- Dynamics CRM EXCEL导入数据字段类型为选项集时的注意事项
在开始先展示下CRM的导入数据涉及选项集字段时的一个问题 下图是选项集字段的属性 下图是我要导入的excel中的列值,可以看出列明和字段名是一致的,而列值却不是选项集中已有的选项 在导入校验时,只要字 ...
- CRM项目经验总结-从DAO层到链接数据池
IDAO接口 定义项目中所有板块相似功能 也是整个项目的根接口 public interface IDAO { /** * 新增数据 @param SQL sql查询语句 @param pa ...
- python读取csv文件、excel文件并封装成dict类型的list,直接看代码
# coding=UTF-8import csvimport xlrd class ReaderFile(): """ 读取csv文件 filePath:文件路径 &qu ...
- python中操作excel数据 封装成一个类
本文用python中openpyxl库,封装成excel数据的读写方法 from openpyxl import load_workbook from openpyxl.worksheet.works ...
- 实现excel导入导出功能,excel导入数据到页面中,页面数据导出生成excel文件
今天接到项目中的一个功能,要实现excel的导入,导出功能.这个看起来思路比较清楚,但是做起了就遇到了不少问题. 不过核心的问题,大家也不会遇到了.每个项目前台页面,以及数据填充方式都不一样,不过大多 ...
随机推荐
- 开源的rtsp实现
开源的rtsp实现 ============== -- by BeagleTam ...
- poj 3260 The Fewest Coins
// 转载自http://blog.163.com/benz_/blog/static/18684203020115721917109/算法不难看出,就是一个无限背包+多重背包.问题在于背包的范围.设 ...
- 【CSS】css各种居中方法
水平居中的text-align:center 和 margin:0 auto 这两种方法都是用来水平居中的,前者是针对父元素进行设置而后者则是对子元素.他们起作用的首要条件是子元素必须没有被flo ...
- FileReader乱码
出现原因:FileReader读取文件的过程中,FileReader继承了InputStreamReader,但并没有实现父类中带字符集参数的构造函数,所以FileReader只能按系统默认的字符集来 ...
- C# 中LinkLabel的简单使用
界面中加入一个LinkLabel控件
- 用Apache Kafka构建流数据平台的建议
在<流数据平台构建实战指南>第一部分中,Confluent联合创始人Jay Kreps介绍了如何构建一个公司范围的实时流数据中心.InfoQ前期对此进行过报道.本文是根据第二部分整理而成. ...
- Rust 中的继承与代码复用
在学习Rust过程中突然想到怎么实现继承,特别是用于代码复用的继承,于是在网上查了查,发现不是那么简单的. C++的继承 首先看看c++中是如何做的. 例如要做一个场景结点的Node类和一个Sprit ...
- ASP.NET MVC3 系列教程 – Web Pages 1.0
http://www.cnblogs.com/highend/archive/2011/04/14/aspnet_mvc3_web_pages.html I:Web Pages 1.0中以“_”开头的 ...
- JAVA中的数据结构——集合类(线性表:Vector、Stack、LinkedList、set接口;键值对:Hashtable、Map接口<HashMap类、TreeMap类>)
Java的集合可以分为两种,第一种是以数组为代表的线性表,基类是Collection:第二种是以Hashtable为代表的键值对. ... 线性表,基类是Collection: 数组类: person ...
- 设计模式系列 1——StaticFactory(静态工厂),AbstractFactory(抽象工厂)
本文出自 代码大湿 代码大湿 本系列持续更新,敬请关注. 1 静态工厂 静态工厂介绍: 静态工厂模式可以实现接口封装隔离的原则.在客户端只知接口而不知实现的时候可以使用静态工厂模式. 源码请点击我 角 ...