我正在做的是获取所有表名并将它们插入列表中。这是我的代码:
public List<string> GetEditExcelSheets(string fileName, out OleDbException Error)
{
List<string> Result = new List<string>();
Error = null;
if (!string.IsNullOrEmpty(fileName) && File.Exists(fileName))
{
string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=\"Excel 12.0 XML;HDR=YES;IMEX=1\"";
if (!string.IsNullOrEmpty(connectionString))
{
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
try
{
connection.Open();
DataTable tables = connection.GetSchema("Tables");
foreach (DataRow row in tables.Rows)
{
string TableName = Convert.ToString(row["TABLE_NAME"]);
Result.Add(TableName);
}
}
catch (OleDbException ex)
{
Error = ex;
}
finally
{
if (connection.State == System.Data.ConnectionState.Open)
{
connection.Close();
}
}
}
}
}
return Result;
}
我收到了这个错误:
到达此代码行时“'外部表格不符合预期格式”
:
connection.Open();
在Google上搜索解决方案后,我尝试过多次编辑连接字符串。但没有其他连接字符串可以帮助我,这个连接字符串应该工作。我似乎可以弄清楚我做错了什么。
答案 0 :(得分:1)
我找到了解决方法。由于我使用的是开放式XML sdk,因此xlsx文件与xlsx扩展名一起保存,但该文件不是excel文件。它是一个打开的xml文件,使用xlsx扩展名保存,因此Excel可以打开它。这意味着我无法使用sql查询来读取文件中的数据。