Excel批量导入数据之数据校验

最近,工作上接到Excel批量导入数据的需求。在这里,小编想分享的是数据校验那些事,至于如何读取Excel数据,大家可以百度下。

一般而言,Excel批量导入数据,我们都会给客户提供一个固定的模板以输入我们期望的数据。然而,客户的操作,我们是无法预料的,他们有可能增加一列或者删除一列,有可能去掉Excel某个字段的输入限制等等。

Excel模板,有可能只有一个,有可能若干个。各个模板的数据列,或交叉相同,或存在个性化列。

同一个模板,也许因某列数据的不同,而需要填充不同数据列。

......

面对一系列不确定因素,小编在此提出小小的解决方案。

我们可以定义这么一个类:

public class ExcelTemplate
    {
        /// <summary>
        /// 列名
        /// </summary>
        public string ColumnName { get; set; }

/// <summary>
        /// 是否必填
        /// </summary>
        public bool IsRequire { get; set; }

/// <summary>
        /// 列类型
        /// </summary>
        public string ColumnType { get; set; }
    }

有这么一个模板:

创建表头类

var myExcelTemplate = new List<ExcelTemplate>();
myExcelTemplate.Add(new ExcelTemplate() { ColumnName = "序号", IsRequire = true, ColumnType = "string" });
myExcelTemplate.Add(new ExcelTemplate() { ColumnName = "姓名", IsRequire = true, ColumnType = "string" });
myExcelTemplate.Add(new ExcelTemplate() { ColumnName = "入职日期", IsRequire = true, ColumnType = "DateTime" });

假如已经成功读取Excel数据

System.Data.DataTable excelData = GetDataFromExcel(excelPath);

这时候,校验Excel可以这样子~~

//判断是否存在数据行
            if (excelData == null || excelData.Rows.Count <= 0)
            {
                //不存在数据行
                return;
            }

//遍历所有行
            foreach (System.Data.DataRow row in excelData.Rows)
            {
                //遍历列
                foreach (var item in myExcelTemplate)
                {
                    //判断列合法性
                    if (!excelData.Columns.Contains(item.ColumnName))
                    {
                        //列非法
                        return;
                    }

//判断列是否必填
                    if (item.IsRequire && (row[item.ColumnName] == null || string.IsNullOrWhiteSpace(row[item.ColumnName].ToString())))
                    {
                        //空列
                        return;
                    }

//根据列类型尝试类型转换
                    switch (item.ColumnType)
                    {
                        case "DateTime":
                            {
                                if (!row[item.ColumnName].IsDateTime())
                                {
                                    //类型转换失败
                                    return;
                                }
                                break;
                            }
                    }

//...

}
            }

欢迎指点哈哈。

时间: 2024-12-15 15:30:34

Excel批量导入数据之数据校验的相关文章

利用OLEDB+SqlClient实现EXCEL批量导入数据

以下是几个自己写的类 /// <summary> /// 取得Excel对象 /// </summary> /// <param name="strConn">OLEDB连接字符串</param> /// <param name="sql">SQL语句</param> /// <returns></returns> public static DataTable GetE

poi excel批量导入 解决各类型的数据

String value=this.getValue((HSSFCell) row.getCell(position)) 数字类型  时间类型 字符串类型验证没问题, 数字类型如果是1234.0会将其变成1234  如果是1234.5保存仍然保持小数位1234.5,用来解决电话号码和普通数字问题 时间类型将其格式化成了 2015-12-09 12:13:12这种格式便于保存数据库 //解决类型问题,获得数值 public String getValue(HSSFCell cell) { Stri

Excel批量导入商品,遇到导入失败记录到另一个Excel中供下载查看

1 /// <summary> 2 /// EXCEL批量导入 3 /// </summary> 4 /// <param name="filePath">文件路径</param> 5 /// <param name="shop">店铺</param> 6 /// <returns></returns> 7 public string BatchUploadProduct

JEPLUS平台Excel批量导入的操作配置——JEPLUS软件快速开发平台

JEPLUS平台Excel批量导入的操作配置 JEPLUS平台支持Excel数据的批量导入,但是很多客户不明白批量导入怎么配置,今天这个笔记就简单说一下JEPLUS的Excel数据批量导入怎么来配置. 一.效果展示 二.Excel数据批量导入操作的配置过程 1.添加Excel数据批量导入操作需要的按钮 找到目标功能,添加业务需求说需要的按钮,操作如图: 2.为新添加的按钮编写业务所需要的JS事件 Excel数据批量导入时应该按照平台规定的模板来添加,首先还是为"下载模板"这个按钮添加J

redis之批量导入key值数据到redis库

简单说明介绍: 脚本中的data.txt文件是php程序那边在linux服务器上生成的,内容如下: [[email protected] ~]# tail -5 /data/www/e456tadd/data.txt SET 447a70c342e677ac 1,1 SET 6ec81c6c460038ae 9,1 SET 121a61e082c3cd67 1,1 SET 91d08ae6d6ff27e0 11,1 直接导入data.txt文件数据到redis报错提示ET Not Found ,

bos 第4 (区域excel批量导入、区域通用分页查询、分区的添加、分区多条件分页查询、分区导出excel)

BOS项目笔记 第4天 今天内容安排: 1.区域批量导入功能 jQuery OCUpload(一键上传插件).apache POI.pinyin4j 2.实现区域的分页查询 3.对分页代码重构 4.添加分区(combobox下拉框) 5.分区的组合条件分页查询 6.分区数据导出功能 1. 区域数据批量导入功能 1.1 一键上传插件使用 ajax不能做文件上传. 第一步:在jsp页面中引入插件的js文件 <script type="text/javascript" src=&quo

使用SqlBulkCopy实现Excel批量导入数据库

引言: 导入Excel数据时候,因为数据量大,使用 linq 操作插入的时候,很慢.考虑使用ado.net操作数据库方式导入数据.由于数据量比较大使用SqlBulkCopy来实现批量导入. 一.代码解释: 1.将要导入的excel上传保存到服务器. 2.使用OleDbDataAdapter获取excel中的数据插入tab中. 3.在内存中创建一个表newDT,将tab表做修改后更新到newDT中. 4.使用SqlBulkCopy批量将newDT内存表数据插入到数据库表Sys_StuUser中.

JAVA实现Excel批量导入

一.模板下载: 先将模板放在项目WebRoot下的download文件夹下: /** * @Title: downloadFile * @Description: 模板下载 (网络地址) * @param @param id * @param @param url * @param @param fileName * @param @param response * @param @param request * @param @throws Exception * @return void *

notepad++ 文本替换功能,解决excel批量修改数据库的数据操作

^ \(' 开始\t ',' 制表符$ '\) 行末 复制出来之后,使用文本替换功能,转换为SQL,添加到临时表中.然后多表关联修改. SELECT COUNT(*) FROM orderno; # 933行# 单个UPDATE account_log t1,orderno t2 SET t1.`flag`=1 WHERE t1.`order_no`=t2.`order_no` AND t1.`income_type`=4 AND t1.`order_no`='557083624061';# 批