Re[4]: asp+ms word
От: Zerg Россия  
Дата: 09.04.02 08:59
Оценка: 3 (2)
Здравствуйте H.Sheremet, Вы писали:

H.S>И вопрос, мне до сих пор неясный, каким образом сохранить на сервак изменения?


Я делал так (правда с файлом Excel, но каккая разница ):


Сначала получал значение для FileName в формате 'ddmmyyyyhhmmss_'+3 случайные цифры. Может это и извращение — давать такое имя, но что-то хотелось фиксировать дату и время создания файла...
Потом получал для него значение FilePath.
(В настройках IIS нужно установить права записи на папку '\xls_temp')

dim FileName
FileName = Now
Dim regEx
Set regEx = New RegExp
regEx.Pattern = "\D"
do while regEx.Test(FileName)
  FileName = regEx.Replace(FileName, "")
loop    
    
Randomize
FileName = FileName&"_"&(CStr(CInt(Rnd(10)*1000)))
FilePath = Server.MapPath("\xls_temp\"&FileName&".xls")


После заполнения xsl-файла сохраняю его:

  xls.ActiveWorkbook.SaveAs(FilePath)



И потом уж передаю файл клиенту и удаляю его с диска:


 Dim objStream
 Set objStream = Server.CreateObject("ADODB.Stream")
 objStream.Type = adTypeBinary
 objStream.Open
 objStream.LoadFromFile FilePath
        
 with response
  .Addheader "Content-Disposition", "attachment; filename=compare.xls" 
  .ContentType = "application/msexcel"        
  .BinaryWrite objStream.Read
 end with

 objStream.Close
 Set objStream = Nothing

 dim fso
 Set fso=CreateObject("Scripting.FileSystemObject")
 fso.DeleteFile FilePath, True 
 set fso = Nothing


Работает все без проблем.
Вот только для IE5.5 для загрузки файла надо не кликать по ссылке, а в контекстном меню выбрать "Save Target As...", иначе он пытается открыть файл с расширение asp
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.