【问题标题】:Importing CSV Data [closed]导入 CSV 数据 [关闭]
【发布时间】:2015-04-30 11:00:23
【问题描述】:

我正在尝试使用 C# 读取 CSV 文件,对数据执行计算,最后将结果导出到新的 CSV 或文本文件。谁能提出一个好的方法来做到这一点?

【问题讨论】:

  • 您好,到目前为止您尝试过什么?
  • 嗨,我设法通过用 (',') 分隔符拆分来打开 csv,但使用它并执行计算似乎非常棘手
  • 你最好使用像LinqToCSV这样的库
  • 你能帮我更多吗?什么是 LinqToCSV 库?谢谢
  • @Indigo 该问题没有显示任何迹象表明 OP 访问了帮助中心以了解如何提出问题。如果人们不这样做,我们为什么要继续解释?这并不是说我们每天只需要这样做一次左右。 (顺便说一句,我没有投反对票)。正如您在回答中所说,这是一个可用资源充足的主题。 OP 应该已经显示了一些(初步的)代码。就目前而言,这个问题是:过于宽泛且不清楚(我们如何在不了解更多信息的情况下选择最佳方法?)-两者都是有效的密切原因。

标签: c# csv


【解决方案1】:

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

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

理想情况下应该发布一个工作示例,但我不想把我没有做的事情归功于我,所以这里有一些有用的链接可以开始。

Refer this to convert CSV to DataTable

Refer this for DataTable to CSV

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

【讨论】:

  • @RussellLink:乐于提供帮助
【解决方案2】:

将 csv 文件转换为数据表。

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

您可以像这样将您的 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;
    }

【讨论】:

  • 抱歉,没有先看到这个答案。这正是我发布的内容:-)
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    • 2021-12-28
    • 1970-01-01
    相关资源
    最近更新 更多