Skrive inn excel-fil med OLEDB

stemmer
8

Er det noen som vet hvordan de skal skrive til en Excel-fil (.xls) via OLEDB i C #? Jeg gjør følgende:

   OleDbCommand dbCmd = new OleDbCommand(CREATE TABLE [test$] (...), connection);
   dbCmd.CommandTimeout = mTimeout;
   results = dbCmd.ExecuteNonQuery();

Men jeg får en OleDbException kastet med melding:

Kan ikke endre utformingen av tabellen 'test $'. Det er i en skrivebeskyttet database.

Tilkoblingen virker fint, og jeg kan velge data fint, men jeg kan ikke synes å sette inn data i Excel-filen, er det noen som vet hvordan jeg får lese / skrive-tilgang til Excel-fil via OLEDB?

Publisert på 11/09/2008 klokken 22:10
kilden bruker
På andre språk...                            


7 svar

stemmer
1

Et par spørsmål:

  • Har brukeren som utfører din app (du?) Har tillatelse til å skrive til filen?
  • Er filen skrivebeskyttet?
  • Hva er din forbindelse streng?

Hvis du bruker ASP, må du legge til IUSER_ * brukeren som i dette eksempelet .

Svarte 12/09/2008 kl. 00:04
kilden bruker

stemmer
0
  • Hvordan sjekker jeg tillatelsene til å skrive til en Excel-fil for min søknad (Jeg bruker Excel 2007)?
  • Filen er ikke skrivebeskyttet, eller beskyttet (så vidt jeg vet).
  • Tilkoblingen String er:

"Provider = Microsoft.Jet.OLEDB.4.0; Data Source = fifa_ng_db.xls; Mode = Readwrite, Extended Properties = \" Excel 8.0, HDR = Yes; IMEX = 1 \ ""

Svarte 12/09/2008 kl. 14:12
kilden bruker

stemmer
8

Du må legge ReadOnly=False;til tilkoblingsstrengen

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=fifa_ng_db.xls;Mode=ReadWrite;ReadOnly=false;Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";
Svarte 08/10/2008 kl. 16:38
kilden bruker

stemmer
0

Videre til Michael Haren svar. Kontoen du trenger for å gi endre tillatelser til XLS filen vil trolig være nettverkstjenesten hvis denne koden kjøres i en ASP.NET applikasjon (det er spesifisert i IIS Application Pool). For å finne ut nøyaktig hva som står kode kjører som du kan gjøre en enkel:

Response.Write(Environment.UserDomainName + "\\" + Environment.UserName);
Svarte 08/10/2008 kl. 16:49
kilden bruker

stemmer
14

Jeg var også ute etter og svar, men Zorantula løsning fungerte ikke for meg. Jeg fant løsningen på http://www.cnblogs.com/zwwon/archive/2009/01/09/1372262.html

Jeg fjernet ReadOnly=falseparameteren, og den IMEX=1utvidede egenskapen.

Den IMEX=1egenskap åpner boken i importmodus, slik at strukturmodifiser kommandoer (som CREATE TABLEeller DROP TABLE) ikke fungerer.

Min arbeidstilkoblingsstreng er:

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=workbook.xls;Mode=ReadWrite;Extended Properties=\"Excel 8.0;HDR=Yes;\";"
Svarte 23/04/2009 kl. 08:49
kilden bruker

stemmer
0

Jeg var kjører under ASP.NET, og møtte både "Kan ikke endre design ..." og "Finner ikke ISAM ..." feilmeldinger.

Jeg fant ut at jeg trengte å:

en ) Bruk følgende forbindelsesstrengen:

Provider=Microsoft.Jet.OLEDB.4.0;Mode=ReadWrite;Extended Properties='Excel 8.0;HDR=Yes;';Data Source=" + {path to file};

Merk Jeg har også hatt problemer med IMEX=1og med ReadOnly=falseattributtene i tilkoblingsstrengen.

b ) Gi alle alle tillatelser til mappen der filen ble skrevet. Normalt ASP.NET går under NETWORK SERVICE konto, og som allerede hadde tillatelser. Imidlertid er OLEDB kode uovervåkede, så det må kjøres under en annen sikkerhetskontekst. (Jeg er for tiden for lat til å finne ut hvilken konto, så jeg bare brukt ALLE.)

Svarte 10/06/2009 kl. 14:11
kilden bruker

stemmer
2

Jeg hadde også det samme problemet. Bare fjerne den utvidede eiendom IMEX=1. Det vil løse problemet. Tabellen vil bli opprettet i Excel-fil ...

Svarte 04/08/2011 kl. 18:16
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more