Я пытаюсь получить первый лист файла Excel:
try
{
string constring = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + filepath + ";Extended Properties=Excel 12.0;";
OleDbConnection conn = new OleDbConnection(constring);
conn.Open();
DataTable myTables = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
var myTableName = conn.GetSchema("Tables").Rows[0].Table;
string sqlquery = string.Format("SELECT * FROM [{0}]", myTableName);
OleDbDataAdapter da = new OleDbDataAdapter(sqlquery, conn);
da.Fill(dt);
MessageBox.Show(Convert.ToString(dt.Rows.Count));
return dt;
}
catch (Exception e)
{
MessageBox.Show(e.Message, "Error", MessageBoxButton.OK,
MessageBoxImage.Error);
return dt;
}
Что я делаю не так?
РЕДАКТИРОВАТЬ:
Следующая ошибка показать вверх: Механизм базы данных Microsoft Office Access не смог найти объект «Таблицы».
Это работает с Visual Basi c:
Try
Dim constring As String = "Provider=Microsoft.ACE.OLEDB.12.0;" &
"Data Source=" & filepath &
";Extended Properties=Excel 12.0;"
Dim conn As New OleDbConnection(constring)
conn.Open()
Dim myTables As DataTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, Nothing, "TABLE"})
Dim myTableName = conn.GetSchema("Tables").Rows(0)("TABLE_NAME")
Dim sqlquery As String = String.Format("SELECT * FROM [{0}]", myTableName)
Dim da As New OleDbDataAdapter(sqlquery, conn)
da.Fill(dt)
conn.Close()
MsgBox(dt.Rows.Count)
Return dt
Catch ex As Exception
MsgBox(Err.Description, MsgBoxStyle.Critical)
Return dt
End Try
I ' m пытается скопировать его с C#.
Похоже, строка ошибки выглядит следующим образом:
var myTableName = conn.GetSchema("Tables").Rows[0].Table;
Она пытается повторить следующую строку в коде VB:
Dim myTableName = conn.GetSchema("Tables").Rows(0)("TABLE_NAME")