0

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")
4

1 に答える 1