Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Работа с Excel (позднее связывание.) / 8 сообщений из 8, страница 1 из 1
01.11.2006, 10:52
    #34096501
:)
:)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с Excel (позднее связывание.)
пипл, хелп.
запускаю ексель
string sAppId = "Excel.Application";
Type tExcelObj = Type.GetTypeFromProgID(sAppId);
object oExcel = Activator.CreateInstance(tExcelObj);

процесс появляется на пару секунд и исчезает, сам эксель не открывается, не сталкивались? офис на компе 2003, мож изза этого.
...
Рейтинг: 0 / 0
01.11.2006, 12:06
    #34096884
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с Excel (позднее связывание.)
Попробуйте добавить после
Код: plaintext
1.
2.
3.
object oExcel = Activator.CreateInstance(tExcelObj);

oExcel.GetType().InvokeMember("Visible",BindingFlags.SetProperty,null,oExcel,new object[]{true});
дойдет до него? или свалиться?
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
01.11.2006, 12:20
    #34096961
:)
:)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с Excel (позднее связывание.)
Попробуйте добавить после

object oExcel = Activator.CreateInstance(tExcelObj);

oExcel.GetType().InvokeMember("Visible",BindingFlags.SetProperty,null,oExcel,new object[]{true});
дойдет до него? или свалиться?
_________________
"Helo, word!" - 17 errors 56 warnings


Да. так запускается. спасибо.
...
Рейтинг: 0 / 0
01.11.2006, 12:23
    #34096980
:)
:)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с Excel (позднее связывание.)
Попробуйте добавить после

object oExcel = Activator.CreateInstance(tExcelObj);

oExcel.GetType().InvokeMember("Visible",BindingFlags.SetProperty,null,oExcel,new object[]{true});
дойдет до него? или свалиться?
_________________
"Helo, word!" - 17 errors 56 warnings

а какой метод использования excel лучше?

тот который я использовал или юзать reference Excel?
...
Рейтинг: 0 / 0
01.11.2006, 12:31
    #34097025
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с Excel (позднее связывание.)
:)
Да. так запускается.

Он и до этого у Вас запускался - просто был невидим. А искать его нуна не в Task Manager -> Applications, а в Task Manager -> Processes.
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
01.11.2006, 12:45
    #34097095
Лиман Артём
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с Excel (позднее связывание.)
Вообще работать с Экселем через позднее связывание в c# - дело довольно
геморное. Предлагаю альтернативное решение - всю работу с СОМ объектами
экселя перенести в VB.Net проэкт (dll). Так можна обойтись без заморочек с
рефлексией и код будет намного красивше. Более того, на этапе разработки,
можна вообще использовать раннее связывание, путем добавления соотв.
референсов. Тогда можна нормально использовать интелисенс, а не лазить по
докам ищя названия методов. Для релиза, все вызовы типа dim excelApp as new
Excel.Application() заменить на dim excelApp as object =
CreateObject("Excel.Application"). А весь остальной код на 95% должен
остаться as is.


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
01.11.2006, 12:47
    #34097101
:)
:)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с Excel (позднее связывание.)

Да. так запускается.

Он и до этого у Вас запускался - просто был невидим. А искать его нуна не в Task Manager -> Applications, а в Task Manager -> Processes.
_________________
"Helo, word!" - 17 errors 56 warnings

хе, не совсем же я балбес. мониторил именно по процессам. )
...
Рейтинг: 0 / 0
02.11.2006, 01:13
    #34099312
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с Excel (позднее связывание.)
Лиман Артём
Вообще работать с Экселем через позднее связывание в c# - дело довольно геморное

Почему? Как два байта перслать
А из преимуществ я бы, IMHO, отметил следующее:

Во-первых: "переносимость" самого кода как такового - на BCB я в большинстве случаев работал посредством серверов (TWordApplication, TExcelApplication etc. - раннее связывание) и, когда пришлось, кое-что реализовать на JavaScript (а теперь и на C#) - почти ничего из наработанного не пригодилось
А так - просто тупо брал бы, 4 example:
BCB
Код: plaintext
1.
2.
Excel.OlePropertySet("Visible",true);
Excel.OlePropertySet("DisplayAlerts",false);
и перегонял бы
C#
Код: plaintext
1.
2.
Excel.GetType().InvokeMember("Visible",BindingFlags.SetProperty,null,Excel,new object[]{true});
Excel.GetType().InvokeMember("DisplayAlerts",BindingFlags.SetProperty,null,Excel,new object[]{false});
JS
Код: plaintext
1.
2.
Excel.Visible=true;
Excel.DisplayAlerts=false;

Во-вторых: переносимость на уровне M$ Office . Наше ПО юзает куча народа с хз каким установленным M$ Office. И на моей памяти вылез только один, исходя из , давно и общеизвестный глюк с MSWord.OleFunction("CentimetersToPoints",c2p); (при раннем связывании, по крайней мере из-под BCB, он не наблюдался).

В-третьих:
Лиман Артём
лазить по докам ищя названия методов

этого + X:\Program Files\Microsoft Office\Office\VBAXL8.HLP - IMHO, хватает с гольовой. Это же не лазить по h-файлам (как в случае с серверами в BCB (потому как по ним, как раз, доки/help'а практически никакого, Ctrl-Space - не в счет)).

Ессесно каждый раз всю эту бодягу расписывать - действительно влом. По сему проще сделать обертку с "человеческим лицом"
и юзать уже ее.
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Работа с Excel (позднее связывание.) / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]