Avatar billede stoffer Nybegynder
01. februar 2000 - 13:56 Der er 11 kommentarer og
1 løsning

Komplicerede Excel funktioner overfør til ASP

jeg har nogle meget komplicerede beregninger i Excel.

her er et eksempel: =HVIS(F6=1,AFRUND(-0.0235+100*IA(J22:J142,0.02),4),F14)

jeg har før programmeret mig ud af problemer i ASP "the hard way", man skal nemlig kunne skrive i inputfelter og blive opdateret med det samme.


1: Kan man få excel's funktioner ud (jeg ved godt man kan kalde tabeller) er der nogle der har et eksempel?

jeg har fundet lidt om det, men ikke så meget -- jeg vil her henaf:

http://www.15seconds.com/archive/post.asp?List_Id=2&Archive_Id=0F994F7E-2FB7-11D3-8675-00902730270D

2: kan man opdatere et excel med simple queries som i Access, regner excel så tingene ud realtime, kender i nogle komponenter der kan gøre hvad jeg vil.

3 Funtktionen "AI" er der nogen dygtige programmører der kan lave en funktion i ASP der gør det samme....


jeg har læst excel "hjælpen", men det hjælper ikke
Avatar billede mgade Nybegynder
01. februar 2000 - 14:29 #1
http://www2.dfhpilot.dk/wwwopgaver/2512/kup2.asp?opgave=anna har jeg et regneark, der beregnes "serverside". Er det en løsning, så kan du jo glemme asp-programmeringen af funktioner etc. Det kræver bare at du kan installere Excel på serveren.

(Jeg ved ikke rigtigt om jeg  har lyst til at afsløre kup2.asp-scriptet, men det KAN lade sig gøre at lave det, kan du se).

Jeg har et par links, hvis det er den vej du vil?
Avatar billede mgade Nybegynder
01. februar 2000 - 14:31 #2
psst: prøv at svare 25000 eller 15000 på spørgsmålet i "bilag 5" - og betragt de efterfølgende sider.
Avatar billede stoffer Nybegynder
02. februar 2000 - 09:23 #3
Jeg er meget interesseret i det. Hvordan er hastigheden - ca. det samme som Access?

Jeg respekterer at du ikke bare vil aflevere dit script (men du er velkommen :))

Kunne du så fortælle mig hvordan man kalder kolonner og felter og sheets fra Excel.

har jeg fat i det rigtige her:

ex.

vConnString = "DBQ=" & vXlFilePath & ";DefaultDir=" & vXlFilePath1 & ";DRIVER={Microsoft Excel Driver (*.xls)};"
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open vConnString

SQLexcel = "A!D10"
oConn.execute (SQLexcel)

(jeg har et sheet der hedder A og vil. f.eks. vælge felt D10)

opdateringssætninger har jeg ikke rigtig nogen idé om hvordan det skal laves...


Du må meget gerne give mig lidt links, jeg har også selv være lidt "rundt"














Avatar billede stoffer Nybegynder
02. februar 2000 - 09:33 #4
Eller er der noget der hedder

Server.CreateObject("Excel.Application")
Avatar billede mgade Nybegynder
02. februar 2000 - 09:52 #5
http://www.asptoday.com/articles/19991103.htm har en flot artikel med et godt overblik over forskellige metoder.

http://www.asptoday.com/articles/19991011.htm er lidt speciel, men derfor også meget illustrativ på nogen punkter.

http://msdn.microsoft.com/default.asp... Der er meget, men den artikel jeg havde, er smuttet et andet sted hen!!

http://www.asp101.com/puzzles/puzzle8.asp har en løsning der demonstrere hvordan man gemmer en Excel-graf som en gif fil

I øvrigt:
Jeg opgav ODBC driveren, fordi jeg ikke kunne finde ud af at få arket genberegnet. Hvis nogen kender en metode, så er jeg også interesseret! Jeg bruger altså CreateObject("Excel.Application").

Hastigheden er OK synes jeg. Første kald er lidt langsomt, men derefter kalder den fra cachen, og så glider det.

Skrivning kunne foregå:
snot = "navnpaaark"
objExcelApp.Range(snot).Cells(1, 2).Value = request.form("data") & ""

Jeg er hamrende hurtig til at lukke aplikationen igen, eller siger serveren BUM meget hurtigt! Du vil opleve at den hænger det meste af dagen i udviklingsfasen!!

Jeg erstadig interesseret i links selv, selv om jeg har fod på det strengt nødvendige!
Avatar billede stoffer Nybegynder
02. februar 2000 - 10:41 #6
http://www.asptoday.com/articles/19991011.htm
er jo med ODBC

Åbner den en ny version af Excel for hver bruger.

Én excel bruger ca. 6mb RAM. Bare 100 brugere, så bliver det 600 Mb. Det vil sysadmin i hvertfald ikke lade mig lege med....Det er et stort site jeg er igang med så den skal kunne holde til min 150 brugere samtidig. Jeg er bange for at den sluger for meget af serverens ram.

Hvis det er tilfældet tror jeg at jeg vil prøve via ODBC'en

mht. at få arket genberegnet kunne man så ikke bare lukke DB'en og åbne den op igen?


Avatar billede stoffer Nybegynder
02. februar 2000 - 10:42 #7
Avatar billede mgade Nybegynder
02. februar 2000 - 10:55 #8
Vedr. genberegning - jeg mener ikke det virker. Jeg har vistnok prøvet det engang. 150 brugere er selvfølgelig meget. Men med "usynlighed" slået til (    objExcelApp.Visible = true (eller her: false)) sparer man vel lidt. Jeg mener det ligger på 4,5 MB. Desuden kører den enkelte Excelkopi jo kun 1-2 sekunder, mens asp-scriptet afvikles. Og tager det 20 sekunder at fordøje resultatet medfører ca 7,5 aktive kopier af gangen. Worst case!

Kanske den ene artikel er med ODBC, men det er en hammer smart brug + man ved sgu aldrig hvor man havner!
Avatar billede stoffer Nybegynder
02. februar 2000 - 11:46 #9
Men det er jo faktisk hver gang det bliver starten op at det sluger (har prøvet med Word, og det var ikke sjovt for comp.)


Jeg kunne desværre ikke få lov til at installere Excel for sysadmin - heller ikke på test serveren -- så det kommer jeg ikke meget videre med.

Jeg fandt også ud af at excel ODBC ikke var installeret (suk), så det skal den først, og MDAC har før crashet serveren ved en opdatering....

burde man ikke bare kunne gå ind i Option Pack 4.0 og sige Add ?

mit sidste spg. er:

hvordan tilføjer man en Excel driver i sin ODBC?

så vil jeg ikke plage dig mere - og du må få pointsne :)


Avatar billede mgade Nybegynder
02. februar 2000 - 12:31 #10
Hmm... Hos mig hedder filen ODBCCJT32.DLL og det er den samme som fx rummer Access-driveren! Check kontrolpanel=> ODBC Data Sources => Drivers

Lige umidelbart skulle du altså have den, hvisdu har ODBC til Access. Ellers kan du måske finde den på MSDN?
Avatar billede stoffer Nybegynder
02. februar 2000 - 13:11 #11
Jeg har tjekket serverens control panel

den har

SQL
Access
Dbase


Nå, men det kan jeg vel ordne rimeligt nemt ved at opgradere MDAC på serveren...


nu må vi se...



Men du skal i hvertfald have tak for din tid :)
Avatar billede lester_dk Nybegynder
03. august 2002 - 15:26 #12
I skal da bruge Jet 4.0 driveren til at kontakte jeres Excel-dokument...

<%
Dim xlCn
Set xlCn = Server.CreateObject("ADODB.Connection")
With xlCn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & Server.MapPath("flyvepladsjournal-2002-1.xls") & _
";Extended Properties=""Excel 5.0; HDR=No;"""
.Open
End With
%>
<%
adUseServer = 2
adOpenDynamic = 2
adLockOptimistic = 3
adCmdText = 1
Dim rs
Set rs = Server.CreateObject("ADODB.Recordset")
'Don't use client-side cursors - no updates will be allowed
rs.CursorLocation = adUseServer
rs.Open "SELECT * FROM [Flyvedata$]", xlCn, adOpenDynamic, adLockOptimistic, adCmdText

Dette virker for mig.....  skal dog have den til at state et stykke nede i Excel-dokumentet... samt stoppe når den møder "tomme" felter....

Vil gerne have tips til dette....
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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