Member 13476575 Ответов: 2

C# при чтении строк csv получает соответствующее значение заголовка строки


я пробовал читать csv с помощью TextFieldParser. Однако мне нужна помощь, чтобы получить текущий текст заголовка строки при чтении строк.это мой код.Пожалуйста помочь

Что я уже пробовал:



using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System;
using Microsoft.VisualBasic.FileIO;


namespace DataTableTeste
{
    class Program
    {

       
        static void Main(string[] args)
        {

            string csv_file_path = @"C:\Users\MEI.csv";


            using (TextFieldParser csvReader = new TextFieldParser(csv_file_path))
            {
                csvReader.SetDelimiters(new string[] { "," });
                csvReader.HasFieldsEnclosedInQuotes = true;
                string[] colFields = csvReader.ReadFields();
                List<int> coulumnNamelist = new List<int>();
                

                for (int index = 0; index < colFields.Length; index++)
                {
                    string column = colFields[index];
                    coulumnNamelist.Add(index);

                                        
                }
                while (!csvReader.EndOfData)
                {
                    string[] fieldData = csvReader.ReadFields();
                    
                    for (int i = 0; i < fieldData.Length; i++)
                    {
                                               
// here i need to get the coulmn header 

                    }

                }


            }


        }


    }

}

2 Ответов

Рейтинг:
13

Richard Deeming

List<int> coulumnNamelist = new List<int>();
for (int index = 0; index < colFields.Length; index++)
{
    string column = colFields[index];
    coulumnNamelist.Add(index);
}

Этот блок просто создает список индексов столбцов с запутанными именами. Вы можете спокойно удалить это.

Заголовки столбцов хранятся в colFields массив. Вы можете использовать это для чтения заголовков:
string[] fieldData = csvReader.ReadFields();
for (int i = 0; i < fieldData.Length; i++)
{
    string columnHeader = colFields[i];                                               
    ...
}


Рейтинг:
0

Gerry Schmitz

Поскольку "заголовок строки" обычно / всегда является первой записью, вы читаете эту запись, сохраняете ее, а затем переходите к чтению "данных".

Используйте string.split в заголовке, чтобы получить "имена столбцов".