Есть некий шаблон — Excel-документ. Задача — заполнить его данными и отослать пользователю.
Используя DLR, открываю файл и заполняю его нужными данными, но как этот динамический ком-объект потом послать пользователю? Что-то мысль останавливается...
Здравствуйте, michael_isu, Вы писали:
_>Есть некий шаблон — Excel-документ. Задача — заполнить его данными и отослать пользователю.
Что значит отослать? По почте?
_>Используя DLR, открываю файл и заполняю его нужными данными, но как этот динамический ком-объект потом послать пользователю? Что-то мысль останавливается...
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, michael_isu, Вы писали:
_>>Есть некий шаблон — Excel-документ. Задача — заполнить его данными и отослать пользователю.
L>Что значит отослать? По почте?
Файл скачивается при нажатии на ссылку. Т.е. надо сделать некий FileResult, который не статический файл с диска отправляет, а то, что я описал.
Здравствуйте, michael_isu, Вы писали:
L>>Что значит отослать? По почте?
_>Файл скачивается при нажатии на ссылку. Т.е. надо сделать некий FileResult, который не статический файл с диска отправляет, а то, что я описал.
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, michael_isu, Вы писали:
L>>>Что значит отослать? По почте?
_>>Файл скачивается при нажатии на ссылку. Т.е. надо сделать некий FileResult, который не статический файл с диска отправляет, а то, что я описал.
L>Сохранить на диск и подсунуть FileResult.
Без диска бы хотелось...
Если все же через него делать и сохранять во временную директорию файлы, они оттуда как-то очищаются? по какому сценарию? Файлов может генерироваться много и не хотелось бы, чтобы закончилось место на диске.
Здравствуйте, michael_isu, Вы писали:
_>>>Файл скачивается при нажатии на ссылку. Т.е. надо сделать некий FileResult, который не статический файл с диска отправляет, а то, что я описал.
L>>Сохранить на диск и подсунуть FileResult.
_>Без диска бы хотелось...
Ну, если excel умеет в stream сохранять, можно попробоватьч через MemoryStream
_>Если все же через него делать и сохранять во временную директорию файлы, они оттуда как-то очищаются? по какому сценарию? Файлов может генерироваться много и не хотелось бы, чтобы закончилось место на диске.
Если не ошибаюсь, через ActionFilter-ы можно отследить завершение запроса. Если не ошибаюсь, то организровать сборку мусора можно в таком фильтре.
Добавить HttpHandler, который будет рисовать, скажем, грид и потом его возвращать пользователю:
(заголовок вынесен, чтоб имя листа правильное давать. Если не требуется и можно оставить дефолтное, игнор)
Private Sub ExportToXL()
Dim hw As New System.Web.UI.HtmlTextWriter(Page.Response.Output)
Response.ContentEncoding = Encoding.UTF8
Response.ContentType = "Application/x-msexcel"
Response.AppendHeader("Content-Disposition", "attachment; filename=Report.xls")
Response.Write(XLHeader("My Report"))
Response.End()
End Sub
Public Function XLHeader(ByVal SheetName As String) As String
Return"<html xmlns:o=""urn:schemas-microsoft-com:office:office""xmlns:x=""urn:schemas-microsoft-com:office:excel"" xmlns=""http://www.w3.org/TR/REC-html40"" ><head><meta http-equiv=Content-Type content=""text/html; ""><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>" + SheetName + "</x:Name><x:WorksheetOptions><x:DisplayLeftToRight/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml></head><body></body></html>"End Function