Динамическое заполнение и добавление данных из нескольких OledbConnections в один OleDbDataAdapter - PullRequest
0 голосов
/ 09 мая 2020

Я пытаюсь динамически добавлять строки из некоторых файлов Excel, расположенных в каталоге, в OleDbDataAdapter. Пока мне удалось добавить некоторые данные в OleDbDataAdapter, динамически генерируя OleDbConnections, каждая из которых указывает на соответствующие файлы Excel, из которых я хочу читать данные. Однако код останавливается после чтения первого файла Excel. Я подозреваю, что мне нужно очистить некоторые переменные, но сейчас я как бы застрял.

using System;
using System.Data;
using System.Data.OleDb;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace ConsoleApp35
{
    class Program
    {
        static void Main(string[] args)
        {

            string dirALC_EDC = @"C:\Users\________\Desktop\Mission\Fichiers\ALC_EDC\";
            var files = Directory.GetFiles(dirALC_EDC, "*.*", SearchOption.AllDirectories);


            foreach (string file in files)
            {
                String theConnString = (String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0\"", file));

                OleDbConnection excelConnection = new OleDbConnection(theConnString);
                excelConnection.Open();
                var dt = new DataTable();
                var da = new OleDbDataAdapter();
                var _command = new OleDbCommand();
                _command.Connection = excelConnection;
                _command.CommandText = "select * FROM [Sheet1$]";
                da.SelectCommand = _command;

                try
                {
                    da.Fill(dt);

                    for (int i = 4; i <= dt.Rows.Count; i++)
                    {
                        Console.WriteLine(String.Join(", ", dt.Rows[i].ItemArray));
                    }
                }
                catch (Exception e)
                {
                    // process error here
                }

                Console.ReadLine();

            }
        }
    }
}
...