Kann jemand eine Excel-Datei (.xls) über OLEDB in C # schreiben? Ich mache folgendes:
%Vor%Aber ich bekomme eine OleDbException geworfen mit Nachricht:
"Das Design der Tabelle kann nicht geändert werden 'Test $'. Es ist schreibgeschützt Datenbank. "
Meine Verbindung scheint in Ordnung zu sein und ich kann die Daten gut auswählen, aber ich kann nicht scheinen, Daten in die Excel-Datei einzufügen. Weiß jemand, wie ich Lese- / Schreibzugriff auf die Excel-Datei über OLEDB bekomme?
Ich habe auch gesucht und geantwortet, aber Zorantulas Lösung hat nicht für mich funktioniert. Ich fand die Lösung auf Ссылка
Ich habe den Parameter ReadOnly=false
und die erweiterte Eigenschaft IMEX=1
entfernt.
Die Eigenschaft IMEX=1
öffnet die Arbeitsmappe im Importmodus, so dass strukturmodifizierende Befehle (wie CREATE TABLE
oder DROP TABLE
) nicht funktionieren.
Meine funktionierende Verbindungszeichenfolge ist:
%Vor% Ich hatte auch das gleiche Problem. Entfernen Sie nur die erweiterte Eigenschaft IMEX=1
. Das wird dein Problem lösen. Ihre Tabelle wird in Ihrer Excel-Datei erstellt ...
Ein paar Fragen:
Wenn Sie ASP verwenden, müssen Sie den Benutzer IUSER_ * wie in diesem Beispiel hinzufügen.
"Provider = Microsoft.Jet.OLEDB.4.0; Daten Quelle = fifa_ng_db.xls; Modus = ReadWrite; Erweitert Eigenschaften = \ "Excel 8.0; HDR = Ja; IMEX = 1 ""
Nach Michael Harens Antwort. Das Konto, dem Sie der XLS-Datei Änderungsberechtigungen erteilen müssen, ist wahrscheinlich NETWORK SERVICE, wenn dieser Code in einer ASP.NET-Anwendung ausgeführt wird (sie wird im IIS-Anwendungspool angegeben). Um genau herauszufinden, auf welchem Konto Ihr Code läuft, können Sie Folgendes tun:
%Vor%Ich habe unter ASP.NET ausgeführt und beide Fehlermeldungen "Kann das Design nicht ändern ..." und "Kann ISAM nicht finden ..." Fehlermeldungen gefunden.
Ich fand, dass ich es brauchte:
a ) Verwenden Sie die folgende Verbindungszeichenfolge:
Provider=Microsoft.Jet.OLEDB.4.0;Mode=ReadWrite;Extended Properties='Excel 8.0;HDR=Yes;';Data Source=" + {path to file};
Hinweis: Auch ich hatte Probleme mit IMEX=1
und mit den ReadOnly=false
-Attributen in der Verbindungszeichenfolge.
b ) Gewähren Sie ALLE vollen Berechtigungen für den Ordner, in den die Datei geschrieben wurde. Normalerweise wird ASP.NET unter dem NETZWERKDIENST-Konto ausgeführt und hatte bereits Berechtigungen. Der OleDb-Code ist jedoch nicht verwaltet, daher muss es in einem anderen Sicherheitskontext ausgeführt werden. (Ich bin momentan zu faul, um herauszufinden, welches Konto ich gerade benutzt habe.)