如何在c#中读取列表中的多个csv文件的内容

How to read the content of multiple csv files in a list in c#

我想读入列表中的多个csv 文件的内容,并使用此列表将内容拆分到datagridview 中。问题是使用这段代码我只得到文件名而不是文件的内容。如何阅读内容?

下面是代码。

public List<string> GetFileList(string strFilePath, bool SubFolders)
{
    List<string> FileArray = new List<string>();

    var fileContent = string.Empty;
    var filePath = string.Empty;

    using (OpenFileDialog openFileDialog = new OpenFileDialog())
    {
        openFileDialog.InitialDirectory = "C:\Users\blabla\Desktop\folder\files";
        openFileDialog.Filter = "csv files (*.csv)|*.csv|All files (*.*)|*.*";
        openFileDialog.FilterIndex = 2;
        openFileDialog.RestoreDirectory = true;
        openFileDialog.Multiselect = true;

        if (openFileDialog.ShowDialog() == DialogResult.OK)
        {
            try
            {
                string[] Files = System.IO.Directory.GetFiles(strFilePath);
                string[] Folders = System.IO.Directory.GetDirectories(strFilePath);

                for (int i = 0; i < Files.Length; i++)
                {
                    FileArray.Add(Files[i].ToString());
                }

                if (SubFolders == true)
                {
                    for (int i = 0; i < Files.Length; i++)
                    {
                        FileArray.AddRange(GetFileList(Folders[i], SubFolders));
                    }
                }
            }
            catch (Exception Ex)
            {
                throw (Ex);
            }
            return FileArray;
        }
        return FileArray;
    }
}

我希望将 FileArray 中的内容用于数据网格视图,但我只得到了文件名。 非常感谢您的帮助!

您只获取文件名,因为您只读取文件名:)

你需要使用

string[] lines = System.IO.File.ReadAllLines(Files[i].ToString());
FileArray.AddRange(lines)

在你的程序中。

MSDN states:

System.IO.Directory.GetFiles

Returns the names of files that meet

specified criteria.

因此您需要打开每个文件,从中读取所有内容并将其添加到 return 变量。

您可以导入命名空间 Microsoft.VisualBasic.FileIO 吗?如果是,那么您可以查看 TextFieldParser class(请参阅 microsoft documentation and example)。这是一个非常舒服的 class 导入 CSV 文件并逐行阅读它们。在循环中,您可以用相应的数据填充目标集合。