Just nu i M3-nätverket
Jump to content

Går det att styra öppning av worddokument


jodah

Recommended Posts

Jag har flera länkar till word- och ppt-dokument på vårt intranät. Men när man klickar på länken öppnas de i webbläsaren. Jag vill kunna styra så att dokumenten öppnas i word/powerpoint istället.

 

Går det?

 

/Jocke

Link to comment
Share on other sites

Clas Ericson

Ja, det går men inte med automatik. Klienten får istället upp en dialog där hon kan välja att öppna dokumentet eller spara det på sin dator, precis som när ett okänt filformat skickas till klienten.

 

För att åstadkomma detta får du ändra i HTTP-huvudet som skickas till klienten. Se mer på följande länk, http://support.microsoft.com/default.aspx?scid=kb;EN;q260519

 

Dock finns det en bugg i IE5 och 5.5 innan SP2, som gör att den här metoden är lite instabil. Läs mer om buggen på http://support.microsoft.com/default.aspx?scid=kb;EN-US;q267991 Även den rekommenderade fixen "Höger-klicka, välj Spara mål som..." har fungerat lite si och så, tyvärr.

 

 

//Clas

 

[inlägget ändrat 2002-05-26 12:24:14 av Clas Ericson]

Link to comment
Share on other sites

Jag testade att göra en asp-sida "openfile.asp" endast innhållande följande kod.

<%

Response.AddHeader "content-disposition","attachment; filename=Minfil.doc"

%>

 

Minfil.doc ligger i samma mapp som asp-sidan. När jag körde asp-sidan i browsern öppnas dialogrutan (bra så långt). När jag väljer "öppna" startar Word men med ett tomt dokument. Vad gör jag för fel?

 

Sedan skulle jag vilja göra en dynamisk asp-sida och kunna anropa så här:

openfile.asp?filen=Minfil.doc

 

Tacksam för svar.

/Jocke

 

 

Link to comment
Share on other sites

Clas Ericson
När jag väljer "öppna" startar Word men med ett tomt dokument. Vad gör jag för fel?

Du måste skicka ut själva dokumentet också. När du ändrar i HTTP-huvudet så talar du bara om att strömmen data som skickas till klienten innehåller ett word-dokument som heter Minfil.doc. Därefter förväntar sig webbläsaren att ta emot själva dokumentet men eftersom du inte skickar det så öppnas ett tomt dokument.

 

Du kan göra så här:

strFileName = "Minfil.doc"
strSourceFile = server.mappath(strFileName)
arrTmp = split(strFileName,".")
strFileExt = arrTmp(ubound(arrTmp))
intFileSize = 1000 'Anges i bytes och kan erhållas exempelvis mha FileSystemObject

Select Case lcase(strFileExt)
Case "asf"
	strContentType = "video/x-ms-asf"
Case "asp"
	strContentType = "text/asp"
Case "avi"
	strContentType = "video/avi"
Case "bmp"
	strContentType = "image/bmp"
Case "doc", "dot"
	strContentType = "application/msword"
Case "gif"
	strContentType = "image/gif"
Case "htm", "html"
	strContentType = "text/html"
Case "jpg", "jpeg"
	strContentType = "image/jpeg"
Case "mdb", "mde", "mda"
	strContentType = "application/x-msaccess"
Case "mp3"
	strContentType = "audio/mpeg3"
Case "mov"
	strContentType = "video/quicktime"
Case "mpg", "mpeg"
	strContentType = "video/mpeg"
Case "pdf"
	strContentType = "application/pdf"
Case "ppt", "pps"
	strContentType = "application/vnd.ms-powerpoint"
Case "png"
	strContentType = "image/png"
Case "qt", "qtm"
	strContentType = "video/quicktime"
Case "ra", "ram"
	strContentType = "audio/vnd.rn-realaudio"
Case "rm"
	strContentType = "video/vnd.rn-realvideo"
Case "rtf"
	strContentType = "application/msword"
Case "tif", "tiff"
	strContentType = "image/tiff"
Case "txt"
	strContentType = "text/plain"
Case "vsd"
	strContentType = "application/vnd.visio"
Case "wav"
	strContentType = "audio/x-wav"
Case "xls", "xlt", "xla", "skv", "csv", "prn"
	strContentType = "application/vnd.ms-excel"
Case "zip"
	strContentType = "application/x-zip-compressed"
Case Else
	strContentType = "application/octet-stream"
End Select

set oStream = Server.CreateObject("ADODB.Stream")
oStream.Open
oStream.Type = 1 'adTypeBinary
oStream.LoadFromFile strSourceFile

Response.AddHeader "Content-Disposition", "attachment;filename=" & strFileName
Response.AddHeader "Content-Length", intFileSize
Response.Charset = "UTF-8"
Response.ContentType = strContentType

Response.BinaryWrite oStream.Read
Response.Flush

oStream.Close

set oStream = nothing

 

Det var ngt jag skrev förut, men det borde fungera även för dig. Tänk dock på att MDAC 2.5 eller 2.6 krävs för att ADO.Stream ska vara stabil.

 

Sedan skulle jag vilja göra en dynamisk asp-sida ...

strFileName = Request.QueryString("filen")

 

 

//Clas

 

[inlägget ändrat 2002-05-27 19:32:57 av Clas Ericson]

Link to comment
Share on other sites

  • 10 months later...

Hej!

 

Jag vill göra på ett liknande sätt, men jag har ingen fill att öppna, utan all min data kommer från en sql-fråga som jag vill presentera i Excel.

Datat sparas bara i en array och skrivs sen ut...

 

Mvh Erik

 

[inlägget ändrat 2003-04-14 11:05:02 av Erik W]

Link to comment
Share on other sites

Det går bra att få över infon till tex excel eller word på klient eller server. Om du vill anropa word eller excel direkt på klienten kan du helt enkelt skapa ett excel eller word-object från vbscript. Är det på servern får du använda någon slags komponent och ado.

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...