如何在C#中读取具有不同数据的多个CSV文件?

如何在C#中读取具有不同数据的多个CSV文件?,c#,csv,console-application,C#,Csv,Console Application,我正在编写一个控制台应用程序,它使用SmartXLS库从单个文件夹读取多个CSV文件。目前,我的应用程序能够从文件夹中读取具有类似数据的CSV文件,但我对应用程序的要求是逐个读取具有类似/不同数据的所有文件。请帮我做这个 代码: public void GetData() { 整数计数=0; 令牌=新列表(); var files=Directory.EnumerateFiles(@“C:\projects”,“*.csv”); foreach(文件中的字符串文件) { 使用(FileStrea

我正在编写一个控制台应用程序,它使用SmartXLS库从单个文件夹读取多个CSV文件。目前,我的应用程序能够从文件夹中读取具有类似数据的CSV文件,但我对应用程序的要求是逐个读取具有类似/不同数据的所有文件。请帮我做这个

代码:

public void GetData()
{
整数计数=0;
令牌=新列表();
var files=Directory.EnumerateFiles(@“C:\projects”,“*.csv”);
foreach(文件中的字符串文件)
{
使用(FileStream fs=newfilestream(file,FileMode.Open,FileAccess.Read))
{
SmartXLS.WorkBook WB=新工作簿();
WB.readCSV(文件);
DataTable dt=WB.ExportDataTable();
字符串dtSTR;
数据行dr;
对于(int i=1;i
如果您只有(如评论中所述)3种不同类型的csv。
只需相应地创建3个模型,并用于读取数据。

读取文件名或列结构中标识结构类型的内容。。。这样你就知道如何解释正在阅读的内容。3个不同的CSV文件,3种不同的解释方式。写入每个方法,并在“格式类型:已识别。不幸的是,没有快捷方式,这取决于您想要使其动态化的程度以及所需的工作级别。

问题是什么?如何从单个文件夹中读取具有不同列名的CSV文件@Seabizkit不同,您的意思是运行时未知?如果您想将不同的列解析为
DateTime
float
,或者只使用as
string
,您需要对这些文件中的列有一些了解。我在一个文件夹中有3个不同的csv文件,其中包含不同的列。我想知道我怎样才能一个接一个地阅读这三个文件?我想将它们解析为字符串@Grooh如何迭代和读取每个文件@格罗
public void GetData()
        {
                int count = 0;

                 Tokens = new List<Token>();

                 var files = Directory.EnumerateFiles(@"C:\projects", "*.csv");

                foreach (string file in files)
                {
                    using (FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read))
                    {
                        SmartXLS.WorkBook WB = new WorkBook();
                        WB.readCSV(file);

                        DataTable dt = WB.ExportDataTable();
                        string dtSTR;
                        DataRow dr;

                        for (int i = 1; i < dt.Rows.Count; i++)
                        {
                            dr = dt.Rows[i];

                            try
                            {
                                 dtSTR = dr[0].ToString();
                                if (string.IsNullOrEmpty(dtSTR)) continue;

                                var tkn = new Token();
                                tkn.Usagedate = ParseDateTime(dtSTR);
                                tkn.Product_name = dr[1].ToString();
                                tkn.Product_Version = dr[2].ToString();
                                tkn.Userid = dr[3].ToString();

                                Tokens.Add(tkn);
                                count++;

                                Console.WriteLine("Read : " + count);

                                Console.WriteLine("    Reading : " + tkn.Usagedate + "," + tkn.Product_name + "," + tkn.Product_Version + "," + tkn.Userid);

                            }

                            catch (Exception ex)
                            {

                            }

                        }
                    }

                }
            }