2016-07-27 8 views
0

Dieser Code bearbeitet Daten nur, wenn ich Arbeitsblatt Excel-Tabelle/Datei mit C# erstellen. Wenn ich es schon schaffen, erstellt Excel für das Schreiben oder Manipulation Datei, wirft es eine Ausnahme:Schreiben von Excel-Arbeitsblättern aus C#

„Der Microsoft Access-Datenbank-Engine nicht das Objekt‚Sheet1‘finden konnte (Arbeitsblatt in Excel-Datei, die in Datenquelle bezeichnet wird) Stellen Sie sicher, dass das Objekt vorhanden ist und dass Sie den Namen und den Pfadnamen korrekt buchstabieren. Wenn "Tabelle1" kein lokales Objekt ist, überprüfen Sie Ihre Netzwerkverbindung oder wenden Sie sich an den Serveradministrator. "

Dies wird Code Ich versuche:

string con = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=D:\Temp\table1.xlsx;" + @"Extended Properties= 'Excel 12.0 Xml; HDR=YES;' 

OleDbConnection connection = new OleDbConnection(con); 
connection.Open(); 
OleDbCommand cmd = new OleDbCommand(); 
cmd.Connection = connection; 


cmd.CommandText = "CREATE TABLE [table1] (id INT, name VARCHAR, datecol DATE);"; 
cmd.ExecuteNonQuery(); 

cmd.CommandText = "INSERT INTO [table1](id,name,datecol) VALUES(1,'AAAA','2014-01-01');"; 
cmd.ExecuteNonQuery(); 

cmd.CommandText = "INSERT INTO [table1](id,name,datecol) VALUES(2, 'BBBB','2014-01-03');"; 
cmd.ExecuteNonQuery(); 

cmd.CommandText = "INSERT INTO [table1](id,name,datecol) VALUES(3, 'CCCC','2014-01-03');"; 
cmd.ExecuteNonQuery(); 

cmd.CommandText = "UPDATE Book1 SET Name = 'Current Tag' WHERE id = 3;"; 
cmd.ExecuteNonQuery(); 

connection.Close(); 

Jede Hilfe wird herzlich zu erkennen ist, dank

Antwort

1

Gibt es einen Grund, warum Sie verwenden Access-Datenbank haben Befehle Ihre Excel-Datei zu bearbeiten? Andernfalls Sie einen Blick auf der

Microsoft.Office.Interop 

Montag

haben könnten, die in Excel-Dateien direkten Zugriff: https://msdn.microsoft.com/en-us/library/ms173186(v=vs.80).aspx

+0

Offensichtlich gibt viele Möglichkeiten, ein Ziel zu erreichen, ich es auf diese Weise versuchen. Auf diese Weise wird Excel-Datei als eine Datenbank behandelt, und diese sind nicht speziell ACCESS DB-Befehle SQL SERVER verwendet das gleiche. –

+0

Leider, da ich nicht in DB-Befehle bin, kann ich Ihnen bei diesem Ansatz nicht helfen. Ich hoffe, du kannst es irgendwie herausfinden! – Tarrokk