web-dev-qa-db-de.com

Das Microsoft Jet-Datenbankmodul konnte das Objekt "Sheet1 $" nicht finden

Ich versuche, eine Tabellenkalkulationsdatei mit dem Namen Book1.xls zu lesen, die ein Arbeitsblatt mit dem Namen Sheet1 enthält.

Ich erhalte jedoch die folgende Fehlermeldung:

Das Microsoft Jet-Datenbankmodul konnte das Objekt 'Sheet1 $' nicht finden. Stellen Sie sicher, dass das Objekt vorhanden ist und dass Sie den Namen und den Pfadnamen richtig buchstabieren.

Hier ist ein Ausschnitt des Codes, den ich verwende:

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

Ich kann nicht verstehen, warum der Code mein Arbeitsblatt nicht finden kann. Warum ist das so und wie kann ich es beheben?

8
Curt

Ich habe das Problem gefunden.

Es scheint, dass die Kalkulationstabelle an einem falschen Ort gespeichert wurde. Daher wurde filepath nicht auf eine vorhandene Datei verwiesen.

Ich habe das zunächst nicht überprüft, weil ich davon ausging, dass eine andere Fehlermeldung angezeigt würde. So etwas wie "Book1.xls konnte nicht gefunden werden". Wenn es jedoch nicht existiert, wird in der Nachricht nur angezeigt, dass das Arbeitsblatt nicht gefunden werden kann.

13
Curt

Stellen Sie außerdem sicher, dass die Datei nicht bereits in Excel geöffnet ist. Sie können die Datei nicht lesen, wenn sie woanders geöffnet ist. Ich hatte den gleichen Fehler und erkannte, dass ich die Datei in Excel geöffnet hatte.

1
ajwaka

Wenn der Dateiname zusätzliche Punktzeichen wie folgt enthält:

sample.data.csv

nächste Select-Anweisung:

SELECT * FROM [sample.data.csv]

mit Verbindungszeichenfolge:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source="C:\Data\"; Extended Properties="text;HDR=Yes;Format=Delimited;";

wird mit Ausnahme fehlschlagen:

Additional information: The Microsoft Jet database engine could not find the object 'sample.data.csv'.  Make sure the object exists and that you spell its name and the path name correctly.
1
volody

beste Lösung durch vb codiert von diesem Link, alle Kredite an diese Leute- http://www.vbforums.com/showthread.php?507099-data-from-Excel-sheet-to-datagrid-(vb)

C # Meine erwartete Lösung unten

string connString = "Driver={Microsoft Excel Driver (*.xls)};READONLY=FALSE;DriverId=790;Dbq=" + "C:\\Users\\BHARAVI\\Documents\\visual studio 2013\\Projects\\ERP\\ERPAutomation\\Assets\\Data\\Data.xls";

OdbcConnection conn = new OdbcConnection(connString);

conn.ConnectionTimeout = 500;
OdbcCommand CMD = new OdbcCommand("SELECT * FROM [Sheet1$]", conn);
OdbcDataAdapter myDataAdaptor = new OdbcDataAdapter(CMD);
DataSet ds = new DataSet();
myDataAdaptor.Fill(ds ,"Sheet1");
DataTable dt = ds.Tables[0];
foreach (DataRow dr in dt.Rows)
{
    loginId = dr["LoginId"].ToString();
    encryptedPassword = dr["PWD"].ToString();
    URL = dr["URL"].ToString();
}
0
vijai bharath

Nicht sicher, ich habe einen ähnlichen Code (C #), der gut funktioniert ...

Vielleicht können Sie einen Unterschied erkennen?

string connectionString = string.Format(Thread.CurrentThread.CurrentCulture, "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0;HDR=YES;'", excelFilePath);
DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OleDb");
using (DbConnection connection = factory.CreateConnection())
{
    connection.ConnectionString = connectionString;
    using (DbCommand command = connection.CreateCommand())
    {
        command.CommandText = @"SELECT [File], [ItemName], [ItemDescription], [Photographer name], [Date], [Environment site] FROM [Metadata$]";
        connection.Open();
        using (DbDataReader dr = command.ExecuteReader())
        {
            if (dr.HasRows)
            {
                while (dr.Read())
                {
                    .......
                }
            }
        }
        connection.Close();
    }
}

Benennen Sie Ihr Blatt um. oder explizit Spalten hinzufügen; oder prüfen, ob Groß- und Kleinschreibung beachtet wird.

0
Dante

Ändern Sie den Speicherort der Excel-Datei. Dieser Fehler wird behoben. Ihre Datei kann sich in demselben Ordner befinden, in dem sich Ihre Quelle befindet

0
Zohaib Iqbal