读取多个excel文件

时间:2012-12-17 11:43:34

标签: c# excel

我是CSharp编程的新手。我需要从文件夹中读取多个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文件。我现在使用按钮浏览单个文件。但后来我想用这个按钮浏览我有文件的文件夹。因此,当我选择此文件夹时,程序应该自动逐个运行该文件夹中的所有文件。这就是我之前所做的。

[\ code = c#]  类RatWalk     {         public List steps = new List();

    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   
        }

在这里,我想改变它,当我点击按钮并选择文件夹时,它应该逐个运行文件夹中的所有文件。

请让我知道如何做到这一点。

谢谢。

3 个答案:

答案 0 :(得分:3)

我会给你一个例子,并留给你做其余的事。

string [] fileEntries = Directory.GetFiles(sourceDir);
foreach(string fileName in fileEntries)
{
   // do something with fileName
   Console.WriteLine(fileName);
}
顺便说一下,这并不会通过子文件夹进行迭代。

答案 1 :(得分: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");
            }
        }

答案 2 :(得分:0)

  1. 获取目标文件夹的路径。
  2. 获得文件夹后,以编程方式获取其下的所有excel文件并将其放入列表中。
  3. 您的代码读取一个excel文件,遍历excel文件列表并在循环中使用相同的函数。
  4. 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();
            }
        }
    }