导入CSV数据

时间:2015-04-30 11:00:24

标签: c# csv

我正在尝试使用C#读取CSV文件,对数据执行计算,最后将结果导出到新的CSV或文本文件。任何人都可以建议一个好方法来做到这一点吗?

3 个答案:

答案 0 :(得分:0)

将csv文件转换为datatable。

通过从数据表中获取数据来执行计算。

你可以将你的csv转换为像这样的数据表

public static DataTable ImportCSVtoDatatable(string filepath, string strQuery )
    {
       //var fileName = Path.GetFileName(filepath); 
    //strQuery = @"SELECT * FROM " + fileName;

        DataSet ds = new DataSet();
        var constring = string.Format(@"Provider=Microsoft.Jet.OleDb.4.0; Data Source={0};Extended Properties=""Text;HDR=YES;FMT=Delimited""", Path.GetDirectoryName(filepath));

        OleDbConnection con = new OleDbConnection(constring);

        OleDbDataAdapter da = new OleDbDataAdapter(strQuery, con);


        da.Fill(ds);
        DataTable dt = ds.Tables[0];
        return dt;
    }

答案 1 :(得分:0)

我建议将CSV转换为DataTable,使用Linq高效执行所有计算,然后将DataTable写出为CSV。

它会更快,更有效率。此外,DataTable将为您提供更大的灵活性和对数据的控制,而无需使用任何外部帮助。

理想情况下,应该发布一个工作样本,但我不想赞美我尚未完成的工作,所以这里有一些有用的链接。

Refer this to convert CSV to DataTable

Refer this for DataTable to CSV

请注意,网上有许多有用的样品,您可以将其中一个作为参考,然后根据您的需要进行扩展。

答案 2 :(得分:0)

我经常使用http://www.nuget.org/packages/CsvHelper/,我发现它非常适合阅读和编写CSV文件。关于计算,根据您的描述,我可能会创建两个映射到输入和输出行的类,并编写一些从输入对象生成结果(输出行对象)的逻辑。