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 Basic で動作します。
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
私はC#でそれを複製しようとしています。
エラー行は次のようです。
var myTableName = conn.GetSchema("Tables").Rows[0].Table;
VB コードで次の行を複製しようとします。
Dim myTableName = conn.GetSchema("Tables").Rows(0)("TABLE_NAME")