2012-09-21 151 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]; 
} 
相關問題