2012-12-17 55 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"); 
      } 
     }