Здравствуйте 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
Здравствуйте alexandern, Вы писали:
A>Привет.
A>Реально ли сделать такую фишку. A>Из asp СОЗДАТЬ .doc файл, занести туда какие-либо данные и отослать созданный файл клиенту. A>А если вы имеете примерчик на эту тему, это было бы просто суппер.
A>Заранее большое спасибо.
Есть еще один вариант, попроще. Если ты хочешь, что бы клиент получил файл сразу на редактирование, в окне эксплорера, то пропиши:
<% Response.ContentType = "application/msword" %>
а дальше — наливай скриптом обыкновенный HTML, ни о чем не задумываясь :)
Реально ли сделать такую фишку.
Из asp СОЗДАТЬ .doc файл, занести туда какие-либо данные и отослать созданный файл клиенту.
А если вы имеете примерчик на эту тему, это было бы просто суппер.
Здравствуйте alexandern, Вы писали:
A>Привет.
A>Реально ли сделать такую фишку. A>Из asp СОЗДАТЬ .doc файл, занести туда какие-либо данные и отослать созданный файл клиенту. A>А если вы имеете примерчик на эту тему, это было бы просто суппер.
A>Заранее большое спасибо.
без проблем, глянь хоть сюда или сюда,
там делов-то открыть ворд, новый док создать:
Dim App,Doc
Set App = Server.CreateObject("Word.Application")
Set Doc = MSWord.Documents.Add
, запихать что нужно, во вр. файле сохранить, выдать тип миме вордовый, выдать содержимое вр. файла, затем его убить.
Совсем готового кода нет, извини.
Здравствуйте Zerg, Вы писали:
Z>К сожалению, метод "наливки скриптом обыкновенного HTML" не проходит в Netscape 4 (не знаю, правда, как будет это работать в Netscape 6)
Z>А все же, есть ли метод передать файл клиенту без сохранения его во временный файл?
Не знаю насчет Netscape 6, а вот Opera шестая меня порадовала вопросом открыть ли asp-шный файл Word или сохранить
И вопрос, мне до сих пор неясный, каким образом сохранить на сервак изменения?
Здравствуйте Zerg, Вы писали:
Z>Здравствуйте H.Sheremet, Вы писали:
H.S>>а дальше — наливай скриптом обыкновенный HTML, ни о чем не задумываясь
Z>К сожалению, метод "наливки скриптом обыкновенного HTML" не проходит в Netscape 4 (не знаю, правда, как будет это работать в Netscape 6)
Z>А все же, есть ли метод передать файл клиенту без сохранения его во временный файл?
а что тебе не нравятся врем. файлы?
всё равно тебе придётся как-то док выцеплять, не знаю может можно как-нить через COM (ну не спец я в этом... ) , заставить ворд в память писать. Но это тебе нужно будет программить свой COM-объект — мороки я думаю будет гораздо больше чем с временными файлами.
Здравствуйте Курилка, Вы писали:
К>а что тебе не нравятся врем. файлы? К>всё равно тебе придётся как-то док выцеплять, не знаю может можно как-нить через COM (ну не спец я в этом... ) , заставить ворд в память писать. Но это тебе нужно будет программить свой COM-объект — мороки я думаю будет гораздо больше чем с временными файлами.
Ну может быть у ворда есть какой-либо метод записи файла в поток? Я, к сожалению, ничего такого не нашел
Здравствуйте Zerg, Вы писали:
Z>Здравствуйте Курилка, Вы писали:
К>>а что тебе не нравятся врем. файлы? К>>всё равно тебе придётся как-то док выцеплять, не знаю может можно как-нить через COM (ну не спец я в этом...:shuffle: ) , заставить ворд в память писать. Но это тебе нужно будет программить свой COM-объект — мороки я думаю будет гораздо больше чем с временными файлами.
Z>Ну может быть у ворда есть какой-либо метод записи файла в поток? Я, к сожалению, ничего такого не нашел :(
Нету ни фига, да и как ты себе это представляешь?
Типа doc.GetAsBinary()?
В реальной(не очень вебной офисной) жизни такое мягко скажем "не нужно".
Единственное, повторюсь, что приходит в голову — всякие IStorage/IStream, но это, ИМХО:
1. кривовато
2. не так уж тривиально
Всем спасибо за интересные ответы. Единственно возможный вариант оказался метод прямой заливки хтмля, т.к. word отсутствует на серваке. Отдельное спасибо Zerg и H.Sheremet.