如何在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 文件并逐行阅读它们。在循环中,您可以用相应的数据填充目标集合。
我想读入列表中的多个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 文件并逐行阅读它们。在循环中,您可以用相应的数据填充目标集合。