首页 > 解决方案 > 如何在c#中读取列表中多个csv文件的内容

问题描述

我想读取列表中多个 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 中的内容用于 datagridview,但我只得到文件名。非常感谢您的帮助!

标签: c#csvreadline

解决方案


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

你需要使用

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

在你的程序中。

MSDN 状态:

System.IO.Directory.GetFiles

返回满足的文件名

规定的标准。

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


推荐阅读