webForumDet fria alternativet

createobject("Excel.Application")

16 svar · 427 visningar · startad av patflat

patflatMedlem sedan sep. 200421 inlägg
#1

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

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

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
#4
  1. Server.CreateObject
  2. 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
#5

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

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

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

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

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

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

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

till att börja med:

@nders skrev:

  1. Server.CreateObject
patflatMedlem sedan sep. 200421 inlägg
#13

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

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

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

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

Ä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 :-(

Genererad på 377 ms · cache AV · v20260730165559-full.f96bc7eb