将多个CSV文件中的数据导入Excel工作表

时间:2012-09-21 13:15:04

标签: c# excel csv

我需要将50个类似的csv文件中的数据导入到单个Excel工作表中。 有没有办法只从每个文件中获取选定的列并将它们放在一个表格中。

我的csv文件的结构:所有文件中的几列完全相同。 (我希望它们在excel中)然后一列具有相同的列名但不同的数据,我想在excel表中以不同的名称彼此相邻放置。我不希望csv文件中的所有其他剩余列。

简而言之,

  1. 阅读所有csv文件,
  2. 获取所有csv& amp;放入excel表。
  3. 现在,从每个具有相同标题但数据不同的文件中取一列,然后将一个接一个地放在excel表中,并使用csv文件名命名。
  4. 留下剩余的剩余栏目。
  5. 将Excel工作表写入Excel文件。
  6. 最初我认为它可以轻松完成,但考虑到我在学习阶段的编程技巧对我来说很难。请帮忙。

3 个答案:

答案 0 :(得分:2)

Microsoft Text Driver允许您读取DataSet中的CSV数据,使数据操作变得容易。

This Stack Overflow question是一个很好的起点。

答案 1 :(得分:2)

最快的方法是使用FileHelpers将CSV读入DataTable:

http://filehelpers.sourceforge.net/FileHelpers.CommonEngine.CsvToDataTable_overload_4.html

然后使用EPPlus导出Excel中的DataTable,使用此代码段中的方法DataTableToExcelXlsx:

https://stackoverflow.com/a/9569827/351383

使用EPPlus,您不必在执行此代码的计算机上安装Excel,并且可以在服务器上使用它(ASP.NET)

答案 2 :(得分:1)

通过非常简单的编码,我能够读取文件。现在,我们唯一需要做的就是让这段代码有点花哨,遍历给定文件夹中的所有CSV文件并收集数据。一旦我们读取了数据,就可以将其过滤并根据需要放到excel中。 当然,excel可以自己导入CSV,但每次都这样做是不切实际的。我们可以再次将代码添加到应用程序中以实现灵活性,这正是我想要做的。

public static System.Data.DataTable GetDataTable(string strFileName)

{
        System.Data.OleDb.OleDbConnection dbConnect = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0; Data Source = " + System.IO.Path.GetDirectoryName(strFileName) + ";Extended Properties = \"Text;HDR=YES;FMT=TabDelimited\"");
        dbConnect.Open();
        string strQuery = "SELECT * FROM [" + System.IO.Path.GetFileName(strFileName) + "]";
        System.Data.OleDb.OleDbDataAdapter adapter = new System.Data.OleDb.OleDbDataAdapter(strQuery, dbConnect);
        System.Data.DataSet dSet = new System.Data.DataSet("CSV File");
        adapter.Fill(dSet);
        dbConnect.Close();
        return dSet.dbTables[0];
 }