从文件中提取特定数据

时间:2011-04-20 09:20:38

标签: c# excel csv

我有一个特定的csv文件,其中包含以下数据:

uid Business Area   employeeNumber  First   Name    Last Name   JobcodeID

EXBK145 Home Loans  9134805 Mason   Kapari  50635804
ABES623 Absa Consultants & Actuaries    9136459 Elroy   Shilling    50644965
EXTK194 Forex Operations    9140600 Tania   Kanniappen  60390922
ABNM539 Absa  Business Bank 9025659 Zodwa   Mgaga   60225348
ABAJ253 Absa Ins&Fin Advisers(Pty)Ltd   9040745 André   Joubert 50055313
ABSP391 Channel Sales & Service 9044366 Steph   Potgieter   4863
ABDL205 Absa Card   9083713 Lesego  Lekgoro 50050702
EXNM450 Channel Sales & Service 9121175 Thando  Shangase    60470761
EXSK201 Allpay  9130647 Sibusiso    Kambule 60615651
ABEK171 AIFA-PB Advisers    9011833 Esmé    Pretorius   60660026

我需要输出以下内容:

Action  uid       EmploymentStatus
modify  EXBK145   0
modify  ABES623   0
modify  EXTK194   0
modify  ABNM539   0
modify  ABAJ253   0
modify  ABSP391   0
modify  ABDL205   0
modify  EXNM450   0
modify  EXSK201   0
modify  ABEK171   0
从输入文件

我需要的只是UID。香港专业教育学院尝试过“快速csv阅读器”,但我在我的系统上无法正常工作...........我正在使用Visual C#2010。我也尝试使用正则表达式,但这不起作用预期

任何帮助都将受到赞赏,任何例子都可以从中学习。

提前致谢 库尔特

3 个答案:

答案 0 :(得分:3)

您拥有的是制表符分隔文件。有许多可以读取它们的免费和开源库(例如,FileHelpers)。

另一方面,如果您只需要第一列,则可以逐行阅读文件并使用StreamReader自行解析:

 using (StreamReader sr = new StreamReader("TabDelimited.txt")) 
 {
      string line;
      // Read and display lines from the file until the end of 
      // the file is reached.
      while ((line = sr.ReadLine()) != null) 
      {
          int idx = line.IndexOf(' ');
          if (idx < 0)
             continue;

          // get the uid
          string uid = line.Substring(0, idx - 1);
      }
 }

答案 1 :(得分:0)

您可以使用字符串数组中的File.ReadAllLines(path)读取整个文件,然后使用String.split('')解析每一行。

string [] strArray = File.ReadAllLines(path);
string [] line1 =strArray[0].Split(' ');

和line1将包含第一行的所有数据。

由于 SAURABH

答案 2 :(得分:0)

LumentWorks有一个名为CsvREader的好工具。免费。它具有很好的功能。

这是我用过的一段代码:

      CsvReader csv = new CsvReader(textreader, hasHeaders, delimiter);

      int fieldCount = csv.FieldCount;
      string[] headers = null;
      if (m_bHasCSVHeaders)
        headers = csv.GetFieldHeaders();     

      while (csv.ReadNextRecord())
      {...}

希望有所帮助