Avatar billede mri Nybegynder
21. januar 2003 - 16:39 Der er 1 kommentar og
1 løsning

Beregning i Excel fra ASP

Hej

Jeg har et exceldokument med nogle ret voldsomme beregninger. Dem ønsker jeg at kunne bruge fra ASP.

Jeg kan sætte værdierne på mine inputvariabler med ADO, men excel foretager ikke beregningerne. Exceldokumentet skal åbnes og gemmes/ gemmes/ have en opdateringskommando, før jeg kan hente outputværdierne fra beregningerne.

Hvordan får jeg excel til at foretage beregningen, så jeg kan hente den fra ASP?

/Martin
Avatar billede jespernaur Nybegynder
21. januar 2003 - 23:44 #1
Jeg er gået en lidt anden vej, idet det er lykkedes mig at starte Excel som et COM-Automation objekt, åbne et regneark med en simpel beregning, skrive 3 inputparametre til arket og læse resultatet. Det foregår således:

Jeg har lavet regnearket C:\temp\exceltest.xls, som i A7 indeholder formlen:

  =A1+A2+A3

Så har jeg nedenstående ASP-kode:

  set excelApp = Server.CreateObject("Excel.Application")

  excelApp.Visible = True

  excelApp.WorkBooks.Open "C:\temp\exceltest.xls"

  ' Input parametre til A1, A2 og A3
  excelApp.ActiveWorkBook.Worksheets("Sheet1").Cells(1,1).Value = 123
  excelApp.ActiveWorkBook.Worksheets("Sheet1").Cells(2,1).Value = 234
  excelApp.ActiveWorkBook.Worksheets("Sheet1").Cells(3,1).Value = 345


  ' Resultat fra A7
  result = excelApp.ActiveWorkBook.Worksheets("Sheet1").Cells(7,1).Value
  Response.Write "result = " & Cstr(result) & "<br>"

  ' Forlad Excel
  excelApp.DisplayAlerts = False ' Undertryk Save alert ved exit
  excelApp.Quit
 
  set excelApp = Nothing

Hvis du bruger IIS taler sandsynligheden for, at når du kører ovenstående, vil du få følgende fejl allerede i første linie (Server.CreateObject(...)):

Only InProc server components should be used. If you want to use
LocalServer components, you must set the AspAllowOutOfProcComponents
metabase setting. Please consult the help file for important
considerations.

Jeg har ved søgninger rundt omkring konstateret, at dette udgør et af de meget store mysterier ved anvendelse af PWS-IIS. Der er tale om at AspAllowOutOfProcComponents skal rettes i den såkaldte 'metabase', jeg fandt ud af at i min konfiguration (Win98, PWS 4.0) findes et udokumenteret DOS-program mdutil.exe, der kan gøre det:

mdutil set w3svc/AspAllowOutOfProcComponents 1

Hvorvidt dette virker for andre konfigurationer kan jeg ikke sige - man kan rundt omkring finde programmet Metaedit, der angiveligt skulle kunne gøre det samme mere bekvemt, det har jeg dog ikke kunnet få til at virke. LAV EN BACKUP af filen metabase.bin (ligger i C:\WINDOWS\SYSTEM\INETSRV på min maskine) før du går igang!

Mvh
Jesper Naur
Avatar billede mri Nybegynder
22. januar 2003 - 08:45 #2
Det virker jo bare... tak for hjælpen.

På min konfig(win2k/IIS5.1) er der ingen problemer overhovedet.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester