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?
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.
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.
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.
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();
}
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.
Ä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