Schreiben in Excel-Datei mit OLEDB

8

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?

    
Danielb 12.09.2008, 00:10
quelle

7 Antworten

8

Sie müssen ReadOnly=False; zu Ihrer Verbindungszeichenfolge hinzufügen

%Vor%     
Zorantula 08.10.2008, 18:38
quelle
14

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%     
Joan 23.04.2009 10:49
quelle
2

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 ...

    
Erwin Aarnoudse 04.08.2011 20:16
quelle
1

Ein paar Fragen:

  • Hat der Benutzer, der Ihre App ausführt (Sie?), die Berechtigung, in die Datei zu schreiben?
  • Ist die Datei schreibgeschützt?
  • Was ist Ihre Verbindungszeichenfolge?

Wenn Sie ASP verwenden, müssen Sie den Benutzer IUSER_ * wie in diesem Beispiel hinzufügen.

    
Michael Haren 12.09.2008 02:04
quelle
0
  • Wie überprüfe ich die Berechtigungen für das Schreiben in eine Excel-Datei für meine Anwendung (ich benutze Excel 2007)?
  • Die Datei ist nicht schreibgeschützt oder (nach meinem Wissen) geschützt.
  • Meine Verbindungszeichenfolge ist:
  

"Provider = Microsoft.Jet.OLEDB.4.0; Daten   Quelle = fifa_ng_db.xls; Modus = ReadWrite; Erweitert   Eigenschaften = \ "Excel   8.0; HDR = Ja; IMEX = 1 ""

    
Danielb 12.09.2008 16:12
quelle
0

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%     
Duncan Smart 08.10.2008 18:49
quelle
0

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.)

    
Eric Patrick 10.06.2009 16:11
quelle

Tags und Links