Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / ASP.NET Новый топик    Ответить
 ASP & Excel - любовь навеки?   [new]
LoiIver
GDN Member

Откуда: GotDotNet.Ru
Сообщений: N/A
Уважаемые знатоки,

Долгое время пыталась сама решить проблему, но, к сожалению, ничего не вышло.

Собственно, проблема заключается в следущем: на страничке aspx живет кнопка. по её нажатию выбираются данные из базочки и ими заполняется эксельный файлик, который тут же открывается. Код приведу ниже.
Вопрос: почему при запуске всего этого из Visual Studio 2005, все нормально работает, а при переносе на боевую машинку с IIS 6, запускается процесс EXCEL(это видно в Task Manager), а приложение эксель не отображается. и, собственно, больше ничего не происходит. Предполагаю настройку прав доступа различных пользователей вида ASPNET к файлу Excel.exe  или к "приложению Microsoft Excel", но пока пляски с бубном ни к чем не привели. Прошу помощи! Пожалуйста!!!
protected void bGo_Click(object sender, EventArgs e)
{

...
Excel.Application ex = new Excel.Application();
Excel.Workbook eBook;
    

try
{
ex.Workbooks.Add(Type.Missing);
ex.Interactive = false;
ex.EnableEvents = false;
eSheet = (Excel.Worksheet)ex.ActiveSheet;

eSheet.get_Range("C1", "U1").Merge(false);
eSheet.get_Range("C1", "U1").Font.Bold = true;
eSheet.get_Range("C1", "U1").HorizontalAlignment = Excel.Constants.xlCenter;
....
ex.ActiveWorkbook.Saved = true;
}
finally
{
ex.Interactive = true;
ex.ScreenUpdating = true;
ex.UserControl = true;
ex = null;

}
}


Ничто на свете не боится смерти,
Замерзнув, птица падает с ветвей,
О гибели своей ничуть не сожалея....


Данное сообщение получено с GotDotNet.Ru (оригинал)
24 фев 09, 09:55    [6852052]     Ответить | Цитировать Сообщить модератору
 ASP & Excel - любовь навеки?   [new]
Aleksey Basynin
GDN Member

Откуда: GotDotNet.Ru
Сообщений: N/A
Excel никогда на сервере не отобразиться, этого собственно и не нужно, Вам нужно файл на сервере сохранить, а потом его пользователю отдать.

Данное сообщение получено с GotDotNet.Ru (оригинал)
24 фев 09, 10:15    [6852146]     Ответить | Цитировать Сообщить модератору
 ASP & Excel - любовь навеки?   [new]
Zorina
GDN Member

Откуда: GotDotNet.Ru
Сообщений: N/A
как правило, пользователю предоставляют excel-file  для открытия или сохранения его на клиенте с помощью Response.Write.

часто используют private void RenderControlToExcel(Control control)
{
System.IO.StringWriter tw = new System.IO.StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
control.RenderControl(hw);
Response.ContentType = "application/vnd.ms-excel";
Response.Charset = "UTF-8";
Response.Write(tw.ToString());
Response.End();
}



как контрол в этот метод передается таблица, или же грид, заполненный данными. 
+ поищите на форуме, с регулярностью раз в неделю открывается новая тема про excel.
______________________________________
http://asp.net/learn/data-access/

Ищи там где потерял, а не там где светло.
мы с вами когда-то где-то уже встречались да, я была уже когда-то где-то.



Данное сообщение получено с GotDotNet.Ru (оригинал)
24 фев 09, 11:33    [6852561]     Ответить | Цитировать Сообщить модератору
 ASP & Excel - любовь навеки?   [new]
LoiIver
GDN Member

Откуда: GotDotNet.Ru
Сообщений: N/A
Большое спасибо за ответ.
Я искала на форуме про Excel и ASP, но пока вопрос остается открытым. Дело в том, что эксельный файлик необходимо сделать с шапками типа "Утвеждаю", "ООО..... ИНН...... АААХ", "Адрес: ...." и тп. Предполагалось сделать это программно, а не через шаблоны самого экселя ( если таковая возможность вообще существует), поэтому стоит задача А) сформировать с шапками б) открыть на редактирование сразу
Ничто на свете не боится смерти,
Замерзнув, птица падает с ветвей,
О гибели своей ничуть не сожалея....


Данное сообщение получено с GotDotNet.Ru (оригинал)
24 фев 09, 13:29    [6853574]     Ответить | Цитировать Сообщить модератору
 ASP & Excel - любовь навеки?   [new]
LoiIver
GDN Member

Откуда: GotDotNet.Ru
Сообщений: N/A
А почему тогда из-под VS все работает?
//мне действительно непонятно, извините
Ничто на свете не боится смерти,
Замерзнув, птица падает с ветвей,
О гибели своей ничуть не сожалея....


Данное сообщение получено с GotDotNet.Ru (оригинал)
24 фев 09, 13:31    [6853576]     Ответить | Цитировать Сообщить модератору
 Re: ASP & Excel - любовь навеки?  [new]
student-uni
Member

Откуда: Одесса
Сообщений: 1074
Оно не из под ВС работает,
оно локально работает.

И вызывает Ваш локальный ексель.

Теперь вы деплоите на сервер и вызывается серверный ексель который клиенту не виден.

Зорина показал(а) Вам пример как преобразовать данные в поток и послать на клиент,
при этом указан в заголовке тип файла - эксель, что даст знать брозеру что надо вызвать ЛОКАЛьныЙ !!! эксель.

теперь про заголовки.

Вам надо подключить пространство Имен Интероп Оффиц
создать ехцелшит и в нем править Ваши шапки. (Ищите по ключевыем цловам csharp Excel Open)
потом все в поток и далъше по Зорине.
24 фев 09, 14:27    [6853984]     Ответить | Цитировать Сообщить модератору
 Re: ASP & Excel - любовь навеки?  [new]
student-uni
Member

Откуда: Одесса
Сообщений: 1074
либо если у ВАс 2007 то раззиповать его в хмл, поправить и зазиповать обратно
24 фев 09, 14:28    [6853995]     Ответить | Цитировать Сообщить модератору
 RE: ASP & Excel - любовь навеки?   [new]
Atreides
ANM Member

Откуда: AspNetMania.Com
Сообщений: N/A
Уважаемые знатоки,

Долгое время пыталась сама решить проблему, но, к сожалению, ничего не вышло.

Собственно, проблема заключается в следущем: на страничке aspx живет кнопка. по её нажатию выбираются данные из базочки и ими заполняется эксельный файлик, который тут же открывается. Код приведу ниже.
Вопрос: почему при запуске всего этого из Visual Studio 2005, все нормально работает, а при переносе на боевую машинку с IIS 6, запускается процесс EXCEL(это видно в Task Manager), а приложение эксель не отображается. и, собственно, больше ничего не происходит. Предполагаю настройку прав доступа различных пользователей вида ASPNET к файлу Excel.exe или к "приложению Microsoft Excel", но пока пляски с бубном ни к чем не привели. Прошу помощи! Пожалуйста!!!
protected void bGo_Click(object sender, EventArgs e)
{

...
        Excel.Application ex = new Excel.Application();
        Excel.Workbook eBook;
    

        try
        {
            ex.Workbooks.Add(Type.Missing);
            ex.Interactive = false;
            ex.EnableEvents = false;
            eSheet = (Excel.Worksheet)ex.ActiveSheet;
 
            eSheet.get_Range("C1""U1").Merge(false);
            eSheet.get_Range("C1""U1").Font.Bold = true;
            eSheet.get_Range("C1""U1").HorizontalAlignment = Excel.Constants.xlCenter;
....
            ex.ActiveWorkbook.Saved = true;
        }
        finally
        {
            ex.Interactive = true;
            ex.ScreenUpdating = true;
            ex.UserControl = true;
            ex = null;
           
        }
}
Как было сказано выше - экземпляр Excel запускается на сервере а не на клиенте. в принципе вы можете сохранять созданную на сервере страницу в поток на клиенте - но это очень неэффективно - при интенсивном использовании сервер очень быстро рухнет:Самый простой вариант - при нажатии на кнопку делать редирект на специальную страниу - MyExcelBook.ashx - или сделать прямую ссылку прямо со страницы.В этом хендлере выдавать самую обычную таблицу в HTML с заголовком приложения Excel - у клиента предложит открыть страницу на Excel - код хендлера:
using System;
using System.Web;
using System.Text;

public class MyExcelBook: IHttpHandler {
    
    public void ProcessRequest (HttpContext context) {

        context.Response.ContentType = "application/vnd.ms-excel";
        context.Response.AppendHeader("Content-disposition""attachment; filename=myExcelFileName.xls");
        
        string bodyExcelHTML=@"<table border='1px'>
                                    <tr>
                                        <td colspan='2'><h1>Заголовок</h1></td>
                                    </tr>
                                    <tr>
                                        <td><span style='color:red'>колонка 1</span></td>
                                        <td>колонка 2</td>                                        
                                    </tr>                                    
                                </table>"
;

        //Смена кодировки на 1251
        byte[] result=Encoding.GetEncoding(1251).GetBytes(bodyExcelHTML);
        context.Response.OutputStream.Write(result,0,result.Length);
    }
 
    public bool IsReusable {
        get {
            return false;
        }
    }

}


и все
Ахмед Шериев
http://www.akhmed.ru


Данное сообщение получено с AspNetMania.Com (оригинал)
25 фев 09, 02:37    [6856687]     Ответить | Цитировать Сообщить модератору
 ASP & Excel - любовь навеки?   [new]
Zorina
GDN Member

Откуда: GotDotNet.Ru
Сообщений: N/A
вы его еще и редактировать хотите, в смысле, потом еще захочется из него данные назад в базу затолкать?....
ойойойой.....
______________________________________
http://asp.net/learn/data-access/

Ищи там где потерял, а не там где светло.
мы с вами когда-то где-то уже встречались да, я была уже когда-то где-то.



Данное сообщение получено с GotDotNet.Ru (оригинал)
25 фев 09, 10:04    [6857208]     Ответить | Цитировать Сообщить модератору
 ASP & Excel - любовь навеки?   [new]
LoiIver
GDN Member

Откуда: GotDotNet.Ru
Сообщений: N/A
to Zorinа
Вот этого точно не захочется, спасибо :)

to All:
Огромное спасибо за советы!
Ничто на свете не боится смерти,
Замерзнув, птица падает с ветвей,
О гибели своей ничуть не сожалея....


Данное сообщение получено с GotDotNet.Ru (оригинал)
26 фев 09, 12:10    [6863214]     Ответить | Цитировать Сообщить модератору
 Re: ASP & Excel - любовь навеки?  [new]
student-uni
Member

Откуда: Одесса
Сообщений: 1074
Ничто на свете не боится смерти,
Замерзнув, птица падает с ветвей,
на головы безропотных прохожих
26 фев 09, 12:17    [6863260]     Ответить | Цитировать Сообщить модератору
 Re: ASP & Excel - любовь навеки?  [new]
karambol
GDN Member

Откуда: GotDotNet.Ru
Сообщений: N/A
Уважаемые, прошу помощи понять мне, почему сисадмин не дает мне добро в установке офиса на IIS сервере. Аргументирует решение тем, что ASP.NET приложение не должно исспользовать офисные приложения на стороне сервера, так как это прямая угроза безопасности и надежности/стабильности работы сервера.
У меня приложение EXCEL исспользует как эвалюатор формул, тобишь программка исспользует экселину для расчета формул и заполнения отчета. Чего тут "криминального"? Выгружаю экселину грамотно, в процессах не остается. Какой аргумент мне привести в противовес?
Заранее благодарен.

Данное сообщение получено с GotDotNet.Ru (оригинал)
25 апр 09, 22:42    [7114485]     Ответить | Цитировать Сообщить модератору
 Re: ASP & Excel - любовь навеки?  [new]
Kew
Member

Откуда:
Сообщений: 377
Ну, в определенном смысле он прав, мс оффисе -- далеко не серверный продукт, и никто вам не гарантирует его надежную и стабильную работу, особенно на нагруженном сервере. Особенно, когда админу захочется изменить учетную запись, под которой работает служба и офис обнаружит, что пользовательские настройки для нового пользователя отсутствуют :) Или при очередном параноидальном обновлении ексель начнет переспрашивать UI-шными диалогами про какие-нить макросы и т.п. :) В общем, веселья админу сервера вы этим добавите. :)
25 апр 09, 23:05    [7114502]     Ответить | Цитировать Сообщить модератору
 Re: ASP & Excel - любовь навеки?  [new]
karambol
GDN Member

Откуда: GotDotNet.Ru
Сообщений: N/A
Благодарю. Ясно. Ну а выход то где? %) Чего присоветовать может сможете? Прграммулина уж больно красиво юзает этот эксель

Данное сообщение получено с GotDotNet.Ru (оригинал)
26 апр 09, 16:26    [7115118]     Ответить | Цитировать Сообщить модератору
 Re: ASP & Excel - любовь навеки?  [new]
Kew
Member

Откуда:
Сообщений: 377
Договариваться с админом? Он вообще, может пойти на привлечение вас к решению задач администрирования мс офиса на сервере? Может, виртуалку выделит, в которой вы иис и офис разместите?
26 апр 09, 22:03    [7115527]     Ответить | Цитировать Сообщить модератору
 Re: ASP & Excel - любовь навеки?  [new]
student-uni
Member

Откуда: Одесса
Сообщений: 1074
karambol
Уважаемые, прошу помощи понять мне, почему сисадмин не дает мне добро в установке офиса на IIS сервере. Аргументирует решение тем, что ASP.NET приложение не должно исспользовать офисные приложения на стороне сервера, так как это прямая угроза безопасности и надежности/стабильности работы сервера.
У меня приложение EXCEL исспользует как эвалюатор формул, тобишь программка исспользует экселину для расчета формул и заполнения отчета. Чего тут "криминального"? Выгружаю экселину грамотно, в процессах не остается. Какой аргумент мне привести в противовес?
Заранее благодарен.


Ничего не понял, зачем Вы грузите весь эксел ? Дот нет работает великолепно с его библиотеками, Вам надо эти библиотеки (помоему это наз. оффис экстеншн) на сервере иметь.
Вар 2 : спросите админа про Репортинг Сервер, возможно генерация отчетов через РС Вам поможет.
26 апр 09, 22:25    [7115576]     Ответить | Цитировать Сообщить модератору
 Re: ASP & Excel - любовь навеки?  [new]
LoiIver
GDN Member

Откуда: GotDotNet.Ru
Сообщений: N/A
Хочу передать привет всем участникам и сказать, что всё в итоге работает так, как посоветовал уважаемый Atreides.

Ещё раз большое всем спасибо!
Ничто на свете не боится смерти,
Замерзнув, птица падает с ветвей,
О гибели своей ничуть не сожалея....


Данное сообщение получено с GotDotNet.Ru (оригинал)
28 апр 09, 10:29    [7121680]     Ответить | Цитировать Сообщить модератору
 Re: ASP & Excel - любовь навеки?  [new]
YK13
Member

Откуда:
Сообщений: 185
Loilver
protected void bGo_Click(object sender, EventArgs e)
{

...
Excel.Application ex = new Excel.Application();
Excel.Workbook eBook;
    



Передо мной стоит похожая задача и в Desktop приложении все работает а в ASP.NET на Excel.Application ex = new Excel.Application(); выбрасывает исключение "UnauthorizedAccessException" код ошибки 80070005

поделитесь опытом как сделать чтобы работало

Зараннее благодарен
YK13
9 ноя 09, 03:29    [7899431]     Ответить | Цитировать Сообщить модератору
 Re: ASP & Excel - любовь навеки?  [new]
Aleksey Basynin
GDN Member

Откуда: GotDotNet.Ru
Сообщений: N/A
В настройках dcom нужно пользователю под которым asp.net работает на Excel прав надовать. В командной строке пишем dcomcnfg, дальше откроется окошко, там вроде все просто. Будут вопросы пишите.

Данное сообщение получено с GotDotNet.Ru (оригинал)
9 ноя 09, 05:39    [7899467]     Ответить | Цитировать Сообщить модератору
Все форумы / ASP.NET Ответить
 
Лучший учебный центр Microsoft!
Новейшие курсы Microsoft SQL Server 2014!
ОЧЕНЬ привлекательные цены на курсы Oracle — от 26 тыс.руб.!
Все курсы по базам данных: Microsoft SQL Server 2014, Oracle, IBM DB2, Access, MySql