0

我是 c# 新手,我在 c# 上有一个简单的项目,我想在 c# 中从 excel 中获取一些数据,我想将其保存在数据库中,我不知道,我发现以下代码及其运行良好但没有给我数据,这里是代码:

 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 回答