C#模板文件比对

模板文件对比

前言

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

问题描述

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

比如说,你提供的模板是

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

而用户上传的是

姓名 科目 成绩
张三 12 XXXX

如何判断,得出结论

问题分析

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

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

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

代码实现

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

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

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

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

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

3.模板文件对比


        /// <summary>
        /// 判断两个DataTable是否具有相同的表结构
        /// </summary>
        /// <param name="initial">基准DataTable</param>
        /// <param name="test">要测试的DataTable</param>
        /// <returns></returns>
        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;
        }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容