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

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

我的csv文件的结构:所有文件中的几列完全相同。 (我希望他们是在Excel中)然后一列相同的列名,但不同的数据,我想在Excel表中不同的名字相邻的地方。 我不希望从csv文件的所有其他列。

简而言之,

  1. 读取所有的CSV文件,
  2. 获取所有csv共有的所有列并放入Excel表格中。
  3. 现在,从每个具有相同标题但不同数据的文件中取出一列,然后在Excel表格中以csv文件名命名。
  4. 留下其余的列。
  5. 将excel表格写入excel文件。

起初,我认为它可以很容易地完成,但考虑到我的学习阶段的编程技巧,这对我来说是困难的。 请帮忙。

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

这个堆栈溢出问题是一个很好的起点。

最快的方法可能是使用FileHelpers将CSV读取到DataTable中:

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

然后用EPPlus将该DataTable导出到Excel中,使用以下片段中的方法DataTableToExcelXlsx:

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

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

用一个非常简单的编码,我能够读取文件。 现在,我们唯一需要做的就是使这个代码有点奇怪,循环播放给定文件夹中的所有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]; }