我正在编写一个控制台应用程序,它使用SmartXLS库从指定的文件夹中读取多个CSV文件。我能够从单个文件中读取但无法弄清楚如何读取多个文件。请帮助我。
public void GetData()
{
int count = 0;
DeskTokens = new List<Token>();
string directory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
string path = Path.Combine(directory, @"C:\projects\Product_Usage_Year.csv");
SmartXLS.WorkBook WB = new WorkBook();
WB.readCSV(path);
DataTable dt = WB.ExportDataTable();
string CurrentType = string.Empty;
string CurrentCategory = string.Empty;
DataRow dr;
for (int i = 1; i < dt.Rows.Count; i++)
{
dr = dt.Rows[i];
var tkn = new Token();
tkn.Product_name = dr[0].ToString();
tkn.Product_Version = dr[1].ToString();
tkn.Userid = dr[2].ToString();
tkn.User_name = dr[3].ToString();
DeskTokens.Add(tkn);
count++;
Console.WriteLine("Read : " + count);
Console.WriteLine(" Reading : " + tkn.Product_name + "," + tkn.Product_Version + "," + tkn.Userid + "," + tkn.User_name);
}
}
答案 0 :(得分:3)
下面,"path"
是所有CSV文件所在的目录。
var files = Directory.EnumerateFiles("path", "*.csv");
foreach (string file in files)
{
using (FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read))
{
// Use the file stream to read data.
}
}
答案 1 :(得分:0)
// Gets only .csv files
string[] csvFiles = Directory.GetFiles(directoryPath, "*.csv");
并写一个这样的循环:
foreach(file in csvFiles)
{
getData(file);
// ...
}
您还应该在getData
方法中使用路径参数:
public void GetData(string path)
{
int count = 0;
DeskTokens = new List<Token>();
SmartXLS.WorkBook WB = new WorkBook();
WB.readCSV(path);
DataTable dt = WB.ExportDataTable();
string CurrentType = string.Empty;
string CurrentCategory = string.Empty;
DataRow dr;
for (int i = 1; i < dt.Rows.Count; i++)
{
dr = dt.Rows[i];
var tkn = new Token();
tkn.Product_name = dr[0].ToString();
tkn.Product_Version = dr[1].ToString();
tkn.Userid = dr[2].ToString();
tkn.User_name = dr[3].ToString();
DeskTokens.Add(tkn);
count++;
Console.WriteLine("Read : " + count);
Console.WriteLine(" Reading : " + tkn.Product_name + "," + tkn.Product_Version + "," + tkn.Userid + "," + tkn.User_name);
}
}
我希望对你有所帮助:)。