消息说
Microsoft Access数据库引擎找不到该对象 '工作表Sheet1 $'。确保对象存在,并拼写其名称和 路径名称正确。如果'Sheet1 $'不是本地对象,请检查 您的网络连接或联系服务器管理员。
工作表中工作表的名称是“Sheet1”
string connectionString = String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=""Excel 12.0 Xml;HDR=YES"";", fileName);
string query = String.Format("SELECT [columnName1],[columnName2],[columnName3] from [{0}]", "Sheet1$");
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(query, connectionString);
DataSet dataSet = new DataSet();
dataAdapter.Fill(dataSet);
DataTable YourTable = dataSet.Tables[0];
listBox1.DataSource = YourTable.Columns["ColumnName1"];
答案 0 :(得分:5)
这对我有用:
string filename = @"C:\Book1.xlsm";
string connectionString = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=YES\";", filename);
string query = String.Format("SELECT * from [{0}$]", "Sheet1");
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(query, connectionString);
DataSet dataSet = new DataSet();
dataAdapter.Fill(dataSet);
DataTable YourTable = dataSet.Tables[0];
* 注:* 如果您的数据没有标题HDR=NO
另请注意,您在问题中使用了
[columnName1],[columnName2],[columnName3]
供您选择的列。请记住,这些应该是您想要抓取的列中第一个单元格的值。
获取E栏使用:
string connectionString = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=NO\";", filename);
string query = String.Format("SELECT [F5] from [{0}$]", "Sheet1");
替换5您需要的任何其他列号
F1 = A
F2 = B
F3 = C
等等。
您获得的错误可能是因为您打开并激活了该文件。
或者你指的是错误的文件(记住你必须在filename
字符串中包含完整的文件路径。并确保表格正确.Alos注意到我包括{{1在我的字符串中,而不是在我的参数中,所以只记住你想要获取的工作表的名称。如果你仍然无法为我提供你正在使用的工作表的完整文件名,即{{1}和您尝试从中获取数据的工作表。
答案 1 :(得分:-1)
请在Sheet1周围加上方括号。 所以你的查询是:select * from [Sheet1 $]