1. ホーム
  2. asp.net

[解決済み] Microsoft Jet データベースエンジンは、オブジェクト 'Sheet1$' を見つけられませんでした。

2022-02-14 07:39:47

質問

という名前のスプレッドシートファイルを読み込もうとしています。 Book1.xls というワークシートが含まれており、そのワークシートは Sheet1

しかし、次のようなエラーが発生します。

Microsoft Jet データベースエンジンは、オブジェクト 'Sheet1$' を見つけられませんでした。 オブジェクトが存在すること、その名前とパスの綴りを確認してください。 の名前を正しく入力してください。

以下は、私が使っているコードのスニペットです。

Dim dt As DataTable = New DataTable()
Select Case fileExt
    Case ".csv"
        Dim reader As New CsvReader
        dt = reader.GetDataTable(filePath)
    Case ".xls", ".xlsx"

        Dim oleDbConnStr As String
        Select Case fileExt
            Case ".xls"
                oleDbConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & filePath & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=2"""
            Case ".xlsx"
                oleDbConnStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & filePath & ";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=2"""
        End Select



        Using oleDbConn As OleDbConnection = New OleDbConnection(oleDbConnStr)
            oleDbConn.Open()

            Dim oleDbCmd As New OleDbCommand("SELECT * FROM [Sheet1$]", oleDbConn)
            Dim oleDbDa As New OleDbDataAdapter(oleDbCmd)
            oleDbDa.Fill(dt)

            oleDbConn.Close()
        End Using



End Select

なぜコードが私のワークシートを見つけることができないのか、理解できません。これはなぜでしょうか、またどのように解決すればよいのでしょうか。

解決方法を教えてください。

問題が見つかりました。

スプレッドシートが間違った場所に保存されていたようなので filepath が、存在するファイルを指していなかったのです。

最初は違うエラーメッセージが表示されると思い込んでいたので、確認しませんでした。例えば、"Book1.xls could not be found"のようなものです。しかし、それが存在しない場合、メッセージはワークシートが見つからないことを示すだけのように思えます。