Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Download документа Excel 
V
    Опции темы
SKrivosein
Дата 3.7.2013, 03:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Идущий в даль
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 9.6.2007
Где: Praha - Прага

Репутация: нет
Всего: 8



Возникла такая проблема. По данным с базы, на сайте (WebForm) создается Excel. На сервере Excel создается коректно, с правильным названием и в правильной директории.
При дальнейшей попытке его скачать, вот так ....
Код

            string savePath = Server.MapPath("~/");
            DirectoryInfo dirInfo = new DirectoryInfo(savePath + "Login\\Admin\\documents\\excel");

            if (!dirInfo.Exists)
            {
                dirInfo.Create();
            }

            string urlExcel = хххх.ExcelGen(savePath);  //с метода все возвращается коректно

            FileInfo fi = new FileInfo(urlExcel);

            if (fi.Exists)
            {
                try
                {
                    Response.ContentType = "application/vnd.ms-excel";
                    Response.AppendHeader("Content-Disposition", "attachment; filename=" + ExcelName(urlExcel));
                    Response.TransmitFile(urlExcel);
                    Response.End();
                }
                catch (Exception ex)
                {
                    string msg = ex.Message;
                }
            }


... скачивается непонятное отображение HTML страницы в Excel. Причем иногда(10%), скачивает то что надо. 
Файлы PDF, тоже сгенерированые на сайте, так скачиваются нормально.
Менял настройки Response, долбался часа два... и результат никакой.  smile 



--------------------
Оптимист - это плохо информированный человек.
user posted image

PM MAIL   Вверх
jonie
Дата 3.7.2013, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 3
Всего: 118



а что в заголовках написано про Content-Size ?


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
SKrivosein
Дата 4.7.2013, 02:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Идущий в даль
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 9.6.2007
Где: Praha - Прага

Репутация: нет
Всего: 8



Проблема частично решена. С помощью Process Explorera и отладчика VS установил что поток создания Excel (как я понимаю COM) не успевал закрыться перед началом скачивания документа.

Код

Excel.Application excelApp = new Excel.Application();

......

try
{
    excelSheet.SaveAs(savePath);
}
catch (Exception ex)
{
    string msg = ex.Message;
}
 finally
{
    excelApp.Quit();    // вот здесь
}


Помогло добавление Thread.Sleep(100)  И кстати использование GC.Collect() тоже желательно, предотвращает появление потоков клонов, как показал Process Explorer...
Вообщем буду ещё разбираться, искать элегантное решение.

Это сообщение отредактировал(а) SKrivosein - 4.7.2013, 03:39


--------------------
Оптимист - это плохо информированный человек.
user posted image

PM MAIL   Вверх
jonie
Дата 9.7.2013, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 3
Всего: 118



если формат XSLX, то можно юзать openxml sdk, а не Excel - быстрее и удобнее.
Есть еще у DevExpress-а платная либа - Document Server называется, тоже умеет эксель


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
SKrivosein
Дата 20.7.2013, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Идущий в даль
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 9.6.2007
Где: Praha - Прага

Репутация: нет
Всего: 8



Цитата(jonie @ 9.7.2013,  22:55)
если формат XSLX, то можно юзать openxml sdk, а не Excel - быстрее и удобнее.

Спасибо, читаю... очень занятно.
От первого варианта отказался всвязи с проблемами с Excel на сервере. Нашел простое решение с помощью XSL.


--------------------
Оптимист - это плохо информированный человек.
user posted image

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0711 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.