C#模板文件比对

C#模板文件比对_第1张图片
模板文件对比

前言

最近项目里涉及到相关数据文件的上传与解析,整个过程的详细流程及实现此处暂且不讲,这里想谈一下如何确定用户上传的文件是否能够正常解析?

问题描述

换句话说,就是如何判断用户上传的文件是否采用了提供的模板

比如说,你提供的模板是

姓名 年龄 身份证号
张三 12 XXXX

而用户上传的是

姓名 科目 成绩
张三 12 XXXX

如何判断,得出结论

问题分析

直接判断,肯定非常困难,因为用户上传文件的类型可能有多种

同时无论是在 EXCEL上还是在DBF文件上直接对比模板和用户上传的文件都不容易

此时可以将用户上传的文件和模板文件进行转换,转化成统一的、容易比较的层面进行对比(这里采用的是DataTable

代码实现

1.解析模板(模板--->DataTable)

2.解析文件(文件--->DataTable)

以上两步可以归于一类,即实现DBF文件或EXCEL文件的解析和封装

DBF文件的解析与封装参见C#封装DBF文件到DataTable

EXCEL文件的解析与封装参见C#封装EXCEL文件到DataTable

3.模板文件对比


        /// 
        /// 判断两个DataTable是否具有相同的表结构
        /// 
        /// 基准DataTable
        /// 要测试的DataTable
        /// 
        public static Boolean IsSameFormat(DataTable initial, DataTable test)
        {
            //如果列数不同,表结构肯定不同
            if (initial.Columns.Count != test.Columns.Count)
            {
                return false;
            }
            //如果列数相同,循环判断是否每一列都存在
            for (int i = 0; i < test.Columns.Count; i++)
            {
                if (!initial.Columns.Contains(test.Columns[i].ColumnName))
                {
                    return false;
                }
            }
            return true;
        }

你可能感兴趣的:(C#模板文件比对)