我正在尝试将Ms.Excel表列名称传递到组合框中。我使用bellow函数来执行活动,但我得到一个像这样的例外
'元数据$'不是有效名称。确保它不包含无效字符或标点符号,并且不会太长。
这是代码 'Metadata $'不是有效名称。确保它不包含无效字符或标点符号并且不会太长
private void connection(String path)
{
string connectionString = string.Format(Thread.CurrentThread.CurrentCulture, "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0;HDR=YES;'",path);
DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OleDb");
using (DbConnection connection = factory.CreateConnection())
{
connection.ConnectionString = connectionString;
using (DbCommand command = connection.CreateCommand())
{
command.CommandText = @"SELECT [File], [ItemName], [ItemDescription], [Photographer name], [Date], [Environment site] FROM [Metadata$]";
connection.Open();
using (DbDataReader dr = command.ExecuteReader())
{
if (dr.HasRows)
{
while (dr.Read())
{
cmb.Items.Add(dr[0].ToString());
}
}
}
connection.Close();
}
}
}
注意 - 我使用openfiledialog来获取excel文件的路径
我使用了fallowing sql命令而不是在代码上使用一个。
"SELECT column_name from information_schema.columns where table_name = 'BigData' Order by ordinal_position";
这给了我以下例外。
“Microsoft Access数据库引擎无法找到对象'列'。请确保该对象存在,并且您正确拼写其名称和路径名。如果'columns'不是本地对象,请检查您的网络连接或联系服务器管理员。“
我想纠正这个错误。两者或至少单一的。
谢谢。