0

私はC#が初めてで、C#でExcelからデータを取得したいC#の簡単なプロジェクトがあり、それをデータベースに保存したいのですが、それについてはわかりません。次のコードが見つかり、うまく機能していますデータは提供されませんが、コードは次のとおりです。

 var fileName = @"C:\Users\AhsanWindows8\Desktop\Book1.xlsx";
        var connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=\"Excel 12.0;IMEX=1;HDR=NO;TypeGuessRows=0;ImportMixedTypes=Text\""; ;
        using (var conn = new OleDbConnection(connectionString))
        {
            conn.Open();

            var sheets = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
            using (var cmd = conn.CreateCommand())
            {
                cmd.CommandText = "SELECT * FROM [" + sheets.Rows[0]["TABLE_NAME"].ToString() + "] ";

                var adapter = new OleDbDataAdapter(cmd);
                var ds = new DataSet();
                adapter.Fill(ds);
            }
        }

今、これは私のExcelファイルがどのように見えるかです

ここに画像の説明を入力

このデータをキーと値のペアのような辞書で取得できますか?左側の英単語がキーで、右側のテキストが値であるとします。

4

1 に答える 1

0

これを試して:

cmd.CommandText =
        "SELECT * FROM [" + sheets.Rows[0]["TABLE_NAME"].ToString() + "$] ";

データセットがいっぱいになると、このコードを使用して辞書を作成できます。

var dict = new Dictionary<string, string>();
foreach(DataRow row in ds.Tables[0].Rows)
{
  dict.Add(row[0].ToString(), row[1].ToString());
}

LINQ に精通している場合は、これを使用してみてください。

ds.Tables[0].Rows.ToDictionary(r => r[0].Tostring(), r => r[1].Tostring());
于 2013-01-20T20:52:00.100 に答える