patflatMedlem sedan sep. 200421 inlägg
Hej.
Finns det någon här som har erfarenhet av att skapa/öppna excel-filer på servern via ASP?
När jag försöker med denna simpla kod så står webbläsaren bara och laddar och laddar för att till slut tima ut.
Jag har Office XP installerad på servern och filen test.xls finns i den sökvägen.
<%
fileName = "test.xls"
fileName = Server.MapPath(fileName)
set objApplication = createobject("Excel.Application")
objApplication.workbooks.open fileName
%>
Någon som har några förslag på hur jag kan gå vidare?
henkzMedlem sedan apr. 2002179 inlägg
Prova att lägg till denna rad överst. Detta fungerar för mig.
Response.ContentType = "application/vnd.ms-excel"
patflatMedlem sedan sep. 200421 inlägg
Hej och tack för svaret, dock hjälpte det inte.
Jag förstår inte vad problemet är riktigt.
Denna enkla kod (med din extra rad överst)
Response.ContentType = "application/vnd.ms-excel"
fileName = "test.xls"
fileName = Server.MapPath(fileName)
set objApplication = createobject("Excel.Application")
objApplication.workbooks.open fileName
bör ju fungera.
MEN min webbläsare står bara och laddar för att till slut tima ut.
Är det någon inställning som jag kan ha missat någonstans?
Och är det någon inställning man måste göra för att detta ska fungera?
@ndersMedlem sedan juni 200026 914 inlägg
- Server.CreateObject
- Om du har Norton Antivirus installerat kan det ställa till problem när man jobbar med filer. Oftast gäller det FSO, men jag kan tänka mig att det kan ställa till problem i dylika fall också. Prova i så fall att stänga av Script blocking.
Vad är det du vill att koden ska göra? Om du får den där koden att fungera kommer du inte att märka det, eftersom du bara öppnar filen, och sedan inget mer.
mvh
patflatMedlem sedan sep. 200421 inlägg
Jo, jag vill öppna filen, spara ner lite värden i olika fält.
Dessa värden listas från en access-databas.
Eller spara och spara. Det behövs inte sparas.
Tanken är att det ska generera en faktura med info från en databas.
@ndersMedlem sedan juni 200026 914 inlägg
I så fall behöver du inte contenttype-raden, den behöver du bara när du ska skicka ut exceldokument till webbläsaren.
patflatMedlem sedan sep. 200421 inlägg
Nja, jag måste visa den på skärmen.
Det är liksom slutresultatet som skall visas så man kan skriva ut den.
@ndersMedlem sedan juni 200026 914 inlägg
Ok.
Du ska alltså öppna ett befintligt excel-ark med data i, fylla i mer data, och sedan öppna excel-arket i webbläsaren?
Du har en kul utmaning framför dig. ;)
mvh
patflatMedlem sedan sep. 200421 inlägg
Nu har jag testat att avaktivera symantec antivirus men med samma eländiga resultat.
Nu blir jag lite deppig känner jag :-(
Jag menar, hur svårt kan detta vara egentligen?!
Det ska ju fungera.....
patflatMedlem sedan sep. 200421 inlägg
Jo, det verkar lite "halvkul", men när man stupar på steg 1 så är det inte så kul.
patflatMedlem sedan sep. 200421 inlägg
Ok, för att bråka ytterligare med er så har jag lite mer kod.
Denna kod är väl korrekt eller?!
Öppnar XLS-fil
pluttar i lite värden, sparar och stänger
<%
'Response.ContentType = "application/vnd.ms-excel"
fileName = "faktura.xls"
fileName = Server.MapPath(fileName)
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = False
objExcel.workbooks.open fileName
objExcel.Worksheets(1).Cells(1, 1).Value = "kalle"
objExcel.ActiveWorkbook.SaveAs fileName
objExcel.Quit: Set objExcel = nothing
%>
MEN.... Varför funkar det inte?!
Precis som innan så står webbläsaren bara och laddar och laddar.
@ndersMedlem sedan juni 200026 914 inlägg
till att börja med:
@nders skrev:
- Server.CreateObject
patflatMedlem sedan sep. 200421 inlägg
Ops..
Hum, missade det.
Nåja, jag fixade till detta men det hjälpte inte. :-(
<%
'Response.ContentType = "application/vnd.ms-excel"
fileName = "faktura.xls"
fileName = Server.MapPath(fileName)
Set objExcel = Server.CreateObject("Excel.Application")
objExcel.Visible = False
objExcel.workbooks.open fileName
objExcel.Worksheets(1).Cells(1, 1).Value = "kalle"
objExcel.ActiveWorkbook.SaveAs fileName
objExcel.Quit
Set objExcel = nothing
%>
patflatMedlem sedan sep. 200421 inlägg
Om man sedan kollar på serverns (W2K server) Task Manager - Processes så ligger EXCEL.EXE där.
Om det kan vara till någon ledning.
Den processen måste jag sedan "döda" för att få igång IIS-en igen.
@ndersMedlem sedan juni 200026 914 inlägg
Jag lyckas dessvärre inte heller att köra din kod, men jag får "i alla fall" ett felmeddelande som jag inte lyckas bli av med.
The call to Server.CreateObject failed while checking permissions. Access is denied to this object.
Dessvärre kommer jag inte längre i mina tester nu. :/
patflatMedlem sedan sep. 200421 inlägg
Ok, tack iallafall för hjälpen.
Mitt senaste test ser ut så här.
set myObj = Server.CreateObject("Excel.Application")
myObj.Workbooks.Open("C:\Inetpub\wwwroot\faktura.xls")
myObj.ActiveSheet.Range("A1").Value = "test"
myObj.ActiveWorkbook.Save
myObj.ActiveWorkbook.Close
myObj.Workbooks.Close
myObj.Quit
set myObj = Nothing
Och jag ha gett IUSR_datornamn plus en bunt andra konton fulla rättigheter till XLS-filen och dess mapp, men det hjälper inte det heller.
Det måste vara något med min W2K-server. Någor som blockerar detta script.
Antivirus är avaktiverat.
patflatMedlem sedan sep. 200421 inlägg
Ärligt talat så struntar jag i detta nu.
Jag exporterar min faktura-mall i excel till en ASP-fil och fixar det den vägen istället.
Man kan bli trött på mindre.
Tack @nders och Henkz för era försök att hjälpa mig i min svåra stund :-(