2012-12-17 124 views
1

我是CSharp編程的新手。我有一個要求從文件夾中讀取多個excel文件。我不知道該文件夾中的excel文件的數量。我想逐個閱讀所有文件。要閱讀一個單一的文件,我寫了一段代碼。我想要應用此代碼逐個讀取文件夾中的所有文件。請讓我知道方式。這是我的代碼。讀取多個excel文件

class RatWalk 
{ 
    public List<RatStep> steps = new List<RatStep>(); 
    string[] Individal_Runs = Directory.GetFiles(@"C:\Users\AG_Winter\Desktop\Individual_Runs"); 
    public void LoadFromFile(String fileName) // reads data from excel file 
    { 
     steps.Clear(); 
     XlsFile file = new XlsFile(fileName); 
     try 
     { 
      // Everything I wanna do 
     } 
     catch (NullReferenceException ex) 
     { 
      Console.Out.WriteLine("No run"); 
     } 
    } 
} 

謝謝大家。我不知道如何回覆帖子,因爲評論應該是有限數量的字符。所以我在這裏輸入。

在我的程序中,我想從一個文件夾中逐一讀取xlsx文件。截至目前,我正在使用一個按鈕瀏覽單個文件。但是,然後我想用這個按鈕瀏覽我擁有這些文件的文件夾。所以當我選擇這個文件夾時,程序應該自動運行文件夾中的所有文件。這是我在此之前所做的。

[\代碼= C#] 類RatWalk { 公共列表步驟=新列表();

public void LoadFromFile(String fileName)      // reads data from excel file 
    { 

      steps.Clear(); 

      XlsFile file = new XlsFile(fileName); 
try{ 
//everything I wanna do 

}趕上{} }

private void InitializeComponent()        
     { 
      EventHandler handler = new EventHandler(OnClick); 
      button.Text = "Browse for the XLS file";      
      // button properties          
      this.Controls.Add(button); 
} 
private void OnClick(object sender, EventArgs e)   // Browses for the file and loads the selected Excel file 
     { 
      OpenFileDialog fileDialog = new OpenFileDialog(); 
      if (fileDialog.ShowDialog() != DialogResult.OK) 
       return; 
      ratWalk.LoadFromFile(fileDialog.FileName); 

      // Whatever I wanna do 
     } 

在這裏,我想改變它以這樣的方式,當我點擊該按鈕並選擇文件夾,它應該運行在所有文件一個一個的文件夾。

請讓我知道如何做到這一點。

謝謝。

+0

可以請你提供什麼樣的'XlsFile'代表什麼嗎? :) –

+0

@PicrofoEGY:XlsFile是FelxCel庫中的類來讀取或寫入XLSX文件... – Life4menu

回答

1

我會告訴你一個例子,並讓你去做其餘的事情。

string [] fileEntries = Directory.GetFiles(sourceDir); 
foreach(string fileName in fileEntries) 
{ 
    // do something with fileName 
    Console.WriteLine(fileName); 
} 

順便說一句,這不會迭代低谷子文件夾。

+0

非常感謝你 – Life4menu

+0

我已經試過以上通過以下方式.. 公共無效LoadFromFile(字符串文件名){ string [] Individual_Runs =目錄。的GetFiles(@ 「C:\ Individual_Runs」); foreach(字符串IR在Individual_Runs中){ XlsFile file = new XlsFile(IR); 一切我想做的事 } 然後我想用一個按鈕的onclick方法由一個 我的代碼瀏覽的目錄並運行通過每個文件一個是: – Life4menu

+0

你問如何打開文件夾或? –

0
  1. 獲取目標文件夾的路徑。
  2. 一旦你得到該文件夾​​,以編程方式獲取它下面的所有excel文件,並將它們放在一個列表中。
  3. 您的代碼讀取一個excel文件,迭代excel文件列表並在循環中使用相同的函數。
using System; 
using System.IO; 

namespace FileOperationsSample 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      // Change this path to the directory you want to read 
      string path = "C:\\Junk";    
      DirectoryInfo dir = new DirectoryInfo(path); 
      Console.WriteLine("File Name      Size  Creation Date and Time"); 
      Console.WriteLine("================================================================="); 
      foreach (FileInfo flInfo in dir.GetFiles()) 
      { 
       String name = flInfo.Name; 
       long size = flInfo.Length; 
       DateTime creationTime = flInfo.CreationTime; 
       Console.WriteLine("{0, -30:g} {1,-12:N0} {2} ", name, size, creationTime); 
      } 
      Console.ReadLine(); 
     } 
    } 
} 
+0

對不起,代碼縮進不起作用在我的瀏覽器:( –

1
 string[] Individal_Runs = Directory.GetFiles(@"D:\testfiles"); 
     foreach (string s in Individal_Runs) 
     { 
      try 
      { 
String theConnString= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + s + ";Extended Properties=Excel 8.0;"; 

    OleDbConnection objConn = new OleDbConnection(theConnString); 
    objConn.Open(); 

    OleDbCommand objCmdSelect = new OleDbCommand("SELECT * FROM [sheet1$]", objConn); 
    OleDbDataAdapter objAdapter1 = new OleDbDataAdapter(); 

    objAdapter1.SelectCommand = objCmdSelect; 
    DataSet objDataset1 = new DataSet(); 
    objAdapter1.Fill(objDataset1, "XLData"); 

    //Your code here 

    objConn.Close(); 


      } 
      catch (NullReferenceException ex) 
      { 
       Console.Out.WriteLine("No run"); 
      } 
     }