我正在尝试使用C#读取CSV文件,对数据执行计算,最后将结果导出到新的CSV或文本文件。任何人都可以建议一个好方法来做到这一点吗?
答案 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文件。关于计算,根据您的描述,我可能会创建两个映射到输入和输出行的类,并编写一些从输入对象生成结果(输出行对象)的逻辑。