您的位置:首页 > 编程语言 > C#

C#模板文件比对

2017-02-25 20:24 176 查看


前言

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

问题描述

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


比如说,你提供的模板是

姓名年龄身份证号
张三12XXXX
而用户上传的是

姓名科目成绩
张三12XXXX
如何判断,得出结论

问题分析

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

同时无论是在
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息