我是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文件的样子
我可以在字典中获取这些数据,例如键值对,假设左侧的英文单词是键,右侧的文本是值。
答案 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());