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