如何在c#中从excel获取逐行数据

时间:2013-01-20 20:36:10

标签: c# excel

我是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文件的样子

enter image description here

我可以在字典中获取这些数据,例如键值对,假设左侧的英文单词是键,右侧的文本是值。

1 个答案:

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