0

2 つのテーブルを含む Excel ファイルがあります。このテーブルを読み取り、このテーブルからすべての値を取得する必要があります。しかし、私が持っているものはすべて次のとおりです。

OleDbConnection cnn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\MigrateExelSql\Include\TestDb.xlsx; Extended Properties=Excel 12.0;");

OleDbCommand oconn = new OleDbCommand("select * from [Sheet1$]", cnn);
cnn.Open();
OleDbDataAdapter adp = new OleDbDataAdapter(oconn);
DataTable dt = new DataTable();
adp.Fill(dt); 

また、Username テーブルと Email テーブルからすべての値を取得するために何を書く必要があるかわかりません。これが .xlsx テーブルTestDbです。2 日目にグーグル検索を行っているのですが、何をしなければならないのかわかりません。誰か助けてください。

そして、このメソッドで値を取得しようとすると、エラーが返されます:

        var fileName = string.Format("{0}\\Include\\TestDb.xlsx", Directory.GetCurrentDirectory());
        var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}; Extended Properties=Excel 12.0;", fileName);

        var adapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", connectionString);
        var ds = new DataSet();

        adapter.Fill(ds, "Username");

        var data = ds.Tables["Username"].AsEnumerable();
        foreach (var item in data)
        {
            Console.WriteLine(item);
        }
        Console.ReadKey();

もう1つ編集:

string con =
            @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\MigrateExelSql\Include\TestDb.xlsx; Extended Properties=Excel 12.0;";
        using(OleDbConnection connection = new OleDbConnection(con))
        {
            connection.Open();
            OleDbCommand command = new OleDbCommand("select * from [Sheet1$]", connection); 
            using(OleDbDataReader dr = command.ExecuteReader())
            {
                 while(dr.Read())
                 {
                     var row1Col0 = dr[0];
                     Console.WriteLine(row1Col0);
                 }
            }
        }

        Console.ReadKey();

これは最初の列のみを読み取りますが、dr[1] を読み取ろうとするとエラーが返されます: インデックスは配列の範囲外でした。

4

1 に答える 1