需要帮助来开发一个C#代码来进行标头验证

时间:2017-09-11 10:46:31

标签: c#

我有一个带有逗号分隔值的平面文件,需要传输到数据表,第一行的值是标题名称,将用作数据表的列名。但在此之前,我需要检查平面文件中是否有所有必需的标题(一些强制标题)。请帮我开发一个C#代码来进行标题验证。

`.
 .
 .
 /getting full file path of Uploaded file and read all text            
 System.IO.StreamReader file = new System.IO.StreamReader(@path);
 string line;
 while ((line = file.ReadLine()) != null)            
 {
  string[] linetemp = line.Split(new char[] { ',' });
  if(tblcsv.Rows.Count==0)
 {
  foreach (string ColName in linetemp)
  {
   tblcsv.Columns.Add(ColName); //Creating columns with available headers names
  }
  }                
  tblcsv.Rows.Add();
  .
  .
  .
  `//remaining code

例如 如果平面文件将包含 日期时间,状态,受让人,记者,持续时间中,col1,col2的,备注 1504451523568,INPROGRESS,ABC,BCD,120,真,B,评论... 1504451523567,建成后,东风集团,BCD,120,真,B,评论... 1504451523566,未分配,VNB,BCD,160,,B,评论... 1504451523565,INPROGRESS,ERT,FGH,150,真,,评论...  我需要检查只有第一行有所有mandaory标题(如datetime,Status,Assignee和Duration)。

2 个答案:

答案 0 :(得分:0)

我建议使用CsvHelpet库来解析CSV文件。它允许定义表示文件中一行的类。标题名称默认为属性名称,或者可以映射usimg fluent API。

var csv = new CsvReader(textReader); var records = csv.GetRecords();

如果缺少某些标题,获取记录将会失败。

答案 1 :(得分:0)

我厌倦了使用来自在线的示例Csv文件来实现您的特定要求。可以找到Csv文件here,我可能没有复杂的代码,但尝试采用最简单的方法来解决这个特定的问题。

下面是您重要的代码的简短版本。

String firstLine;
var fileStream = new FileStream( @ "C:\Users\user\Desktop\AssetsImportCompleteSample.csv", FileMode.Open,
    FileAccess.Read);
 using(var streamReader = new StreamReader(fileStream, Encoding.UTF8)) {
firstLine = streamReader.ReadLine();
}
var values = firstLine.Split(',');
for (int i = 0; i < values.Length; i++) {
values[i] = values[i].Trim();

}
if (values.Length == 4)
                {
                    int count=0;
                    IList<string> newList = new List<string> { "MXASSETInterface", "SRM_SaaS_ES", "EN", "AddChange" };
                    for (int i = 0; i < values.Length; i++)
                    {

                        if (newList.Contains(values[i]))
                        {
                            count++;
                            newList.Remove(values[i]);
                        }

                    }

                    if (count == 4)
                    {
                        Console.WriteLine("head is correct");
                    }
                    else
                    {
                        Console.WriteLine("head is incorrect");

                    }

                }

可以使用以下代码找到完整的控制台应用程序,可以直接运行

 class Program
{
    static void Main(string[] args)
    {
        try
        {
            String firstLine;
            var fileStream = new FileStream(@"C:\Users\user\Desktop\AssetsImportCompleteSample.csv", FileMode.Open,
                FileAccess.Read);
            using (var streamReader = new StreamReader(fileStream, Encoding.UTF8))
            {
                firstLine = streamReader.ReadLine();
            }
            if (firstLine != null)
            {
                var values = firstLine.Split(',');
                Console.WriteLine(firstLine);
                for (int i = 0; i < values.Length; i++)
                {
                    values[i] = values[i].Trim();
                    Console.WriteLine(values[i]);
                }
                if (values.Length == 4)
                {
                     int count=0;
                    IList<string> newList = new List<string> { "MXASSETInterface", "SRM_SaaS_ES", "EN", "AddChange" };
                    for (int i = 0; i < values.Length; i++)
                    {

                        if (newList.Contains(values[i]))
                        {
                            count++;
                            newList.Remove(values[i]);
                        }

                    }

                    if (count == 4)
                    {
                        Console.WriteLine("head is correct");
                    }
                    else
                    {
                        Console.WriteLine("head is incorrect");

                    }

                }
                else
                {
                    Console.WriteLine("header is Invalid");
                }
            }
            else
            {
                Console.WriteLine("header is Invalid");
            }
            Console.ReadLine();
        }
        catch (Exception e)
        {
            Console.WriteLine("Please check if file is available or path is correct", e.Message);

        }
        Console.ReadLine();
    }
}