[asp] excel bestand lezen, bestand blijft open

Pagina: 1
Acties:
  • 166 views sinds 30-01-2008
  • Reageer

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 23-05 16:37

voodooless

Sound is no voodoo!

Topicstarter
Ik ben bezig om een excel bestand in asp uit te lezen. Het excel bestand wordt eerst geupload via http(dat gaat prima), en daarna wil ik het uitlezen, gegevens displayen, en in een access database gooien, en daarna de excel file weer verwijderen.

Probleem is echter, dat na het uitlezen van gegevens, Excel gewoon open blijft staan, en dus is de file nog gelocked. Ik kan deze dus pas weggooien als ik handmatig Excel afschiet. Wat doe ik nu fout? Zijn er misschien andere mogelijkheden om om een Excel file in te lezen (niet met ADODB!).

Test code die ik gebruik:

ASP:
1
2
3
4
5
6
7
8
9
      set XLS = CreateObject("Excel.Application")

      XLS.Workbooks.Open server.mappath("/adm/temp/" & File.FileName )
      
      Set oSheet = XLS.ActiveWorkbook.Worksheets(1)
      Response.Write oSheet.cells(1,3)
      Set oSheet = Nothing
      XLS.quit
      Set XLS = Nothing


Het uitlezen werkt dus wel, echter lijkt het alsof de file het afgesloten wordt.

Do diamonds shine on the dark side of the moon :?


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 12:49

gorgi_19

Kruimeltjes zijn weer op :9

Als je alleen gaat uitlezen, dan kan je imho beter ADO gebruiken om de boel leeg te trekken. Een excel-application aanmaken in een serveromgeving wordt sterk afgeraden, combineer dit met CreateObject (ipv Server.CreateObject) en je krijgt een garantie voor problemen.

Ik ben daarom erg benieuwd waarom je een ADODB wil gebruiken.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 23-05 16:37

voodooless

Sound is no voodoo!

Topicstarter
gorgi_19 schreef op 12 juni 2004 @ 19:58:
[...]

Ik ben daarom erg benieuwd waarom geen je een ADODB wil gebruiken.
Zoiets voelde ik al aankomen :( . Probleem met ADODB is dat ik een of andere SQL query moet gebruiken en een of andere tabel. Die tabel zou dan zo'n worksheet moeten zijn. Ik weet echter de naam van het worksheet niet... Weet iemand een andere manier om gewoon de tabel rij voor rij uit te lezen? Anders ga ik gewoon een komma gescheiden file parsen ofzo...

Do diamonds shine on the dark side of the moon :?


Verwijderd

deepspace schreef op 12 juni 2004 @ 19:35:
Probleem is echter, dat na het uitlezen van gegevens, Excel gewoon open blijft staan, en dus is de file nog gelocked. Ik kan deze dus pas weggooien als ik handmatig Excel afschiet. Wat doe ik nu fout? Zijn er misschien andere mogelijkheden om om een Excel file in te lezen (niet met ADODB!).

Test code die ik gebruik:

ASP:
1
2
3
4
5
6
7
8
9
      set XLS = CreateObject("Excel.Application")

      XLS.Workbooks.Open server.mappath("/adm/temp/" & File.FileName )
      
      Set oSheet = XLS.ActiveWorkbook.Worksheets(1)
      Response.Write oSheet.cells(1,3)
      Set oSheet = Nothing
      XLS.quit
      Set XLS = Nothing


Het uitlezen werkt dus wel, echter lijkt het alsof de file het afgesloten wordt.
pseudo code
code:
1
2
3
4
5
6
7
XLS.create()
  XLS.workbook.open()
    oSheet = XLS.Workbook.Worksheets(1)
    ...
    oSheet.Close
  XLS.workbook.close()
XLS.quit

zoiets.

Grote kans dat je de sheet en/of workbook ook moet sluiten.

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 23-05 16:37

voodooless

Sound is no voodoo!

Topicstarter
Thanks, maar ik heb al een andere oplossing. Ik parse wel een csv file, werkt prima en zonder crap zooi die misschien op de target server niet werkt :X. T'is dat ik geen keuze heb, anders had ik nooit voor asp crap gekozen :(

* voodooless heeft het niet zo Microsoft producten, en zeker niet op dit soort halfgare programmeertalen :+

Do diamonds shine on the dark side of the moon :?


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 12:49

gorgi_19

Kruimeltjes zijn weer op :9

Erhm.. Een andere oplossing was door het DBScheme te achterhalen via ADO. Dan heb je de namen van alle worksheets en hier kan je dan een select query op loslaten.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 23-05 16:37

voodooless

Sound is no voodoo!

Topicstarter
gorgi_19 schreef op 12 juni 2004 @ 22:30:
Erhm.. Een andere oplossing was door het DBScheme te achterhalen via ADO. Dan heb je de namen van alle worksheets en hier kan je dan een select query op loslaten.
Had ik al gezien ja. Maar nu werkt het prima met csv's :)

Do diamonds shine on the dark side of the moon :?

Pagina: 1