2012-09-21 182 views
2

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

我的csv文件的结构:几列在所有文件中完全相同。 (我希望他们是在Excel中),然后一列具有相同的列名,但不同的数据,我想在Excel表单中使用不同的名称彼此相邻。我不希望所有其他csv文件的其余列。

总之,

  1. 读取所有CSV文件,
  2. 得到所有这些都是常见到所有CSV &放于Excel工作表中的列。
  3. 现在,从每个具有相同标题但不同数据的文件中取出一列,然后在Excel表格中以csv文件名称命名。
  4. 保留其余的列。
  5. 将excel表格写入excel文件。

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

+0

好的,经过长时间的尝试。我感到沮丧,没有任何工作。但是,实际上,我收到的csv文件以某种方式被破坏。那么,我会再次使用示例CSV来测试我的代码,然后将其发布在此处以供参考。感谢帮助。 – Indigo

回答

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]; 
} 
相关问题