powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Ole в Forms6i (Из формс в ексель)
28 сообщений из 28, показаны все 2 страниц
Ole в Forms6i (Из формс в ексель)
    #34673910
Forms_Excel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Из Forms6i с помощью ole надо в Excel поменять границы у ячеек, у конкрентной ячейки, у группы.
Как это сделать


Пытался сделать так, но нифига не выходит
args:=ole2.CREATE_ARGLIST;
ole2.ADD_ARG(Args, 'C5:K8');
cell:=ole2.get_OBJ_property(worksheet, 'range', Args);
ole2.DESTROY_ARGLIST(Args);
ole2.Invoke(cell,'select');
ole2.set_property(cell, 'Selection.Borders(xlDiagonalDown).LineStyle', 'xlContinuous');

Объясните пожалуйста назначение строки cell:=ole2.get_OBJ_property(worksheet, 'range', Args);
В ней разных случаях используются разные параметры например
cell:= ole2.GET_OBJ_PROPERTY(Application, 'Cells', args);


Буду очень признателен на ссылки с какой нить литературой, а также на различные примеры. В частности мне надо будет вставлять гиперссылку, менять цвет у части текста в ячейке и т.п.
...
Рейтинг: 0 / 0
Ole в Forms6i (Из формс в ексель)
    #34673942
Фотография -k2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я бы сделала процедуру, которая выполняет экселевский макрос, а уже все это в макросе
...
Рейтинг: 0 / 0
Ole в Forms6i (Из формс в ексель)
    #34673958
Forms_Excel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это как? Хочу через Ole, но такой вариант на будующее хотелось бы знать
...
Рейтинг: 0 / 0
Ole в Forms6i (Из формс в ексель)
    #34673989
Фотография -k2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пожалуйста, наслаждайтесь:
http://www.orafaq.com/forum/t/46164/0/
а вообще ссылок есть в инете
...
Рейтинг: 0 / 0
Ole в Forms6i (Из формс в ексель)
    #34674034
Фотография pan159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давайте мейл, пришлю библиотеку для вывода в Excel через OLE. Там это есть.
...
Рейтинг: 0 / 0
Ole в Forms6i (Из формс в ексель)
    #34674044
Forms_Excel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey046 собака mail точка ru
...
Рейтинг: 0 / 0
Ole в Forms6i (Из формс в ексель)
    #34674069
Фотография pan159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выслал
...
Рейтинг: 0 / 0
Ole в Forms6i (Из формс в ексель)
    #34674098
Forms_Excel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Получил, спасибо.
С OLE придеться наверно до понедельника подождать.
...
Рейтинг: 0 / 0
Ole в Forms6i (Из формс в ексель)
    #34676577
Forms_Excel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
up
...
Рейтинг: 0 / 0
Ole в Forms6i (Из формс в ексель)
    #34677161
Forms_Excel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как мне кажется ошибка в этом месте:
cell:=ole2.get_OBJ_property(worksheet, 'range', Args);
нужно использовать другие параметры
...
Рейтинг: 0 / 0
Ole в Forms6i (Из формс в ексель)
    #34678362
Фотография UK0IAI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот дежурные примеры, только вы с переменными типа exl.cell.obj
сами разберитесь - это уже юзается тогда когда ЯЧЕЙКА екселя уже ВЫБРАНА
(метод select был применен). Заметьте что появляются "спец_фразы" типа
obj1 := ole2.get_obj_property(exl.cell.obj, 'Font'); . Это значит что если мы хотим изменить некие свойства ячейки мы тоолжны снача сделать ole2.get_obj_property для той ячейки (объекта) которая "хранится в переменной exl.cell.obj)


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
     if ColumnWidth is not null then -- чтобы ширину колонки задать всего 1 раз (когда шапку печатаем)
        ole2.set_property(exl.cell.obj, 'ColumnWidth', ColumnWidth);
     end if;  

     --ФОРМАТ В ТЕКСТ
     IF EXL.VAL_TYPE = 'CHR' THEN
     		ole2.set_property(exl.cell.obj, 'NumberFormat', '@');
     END IF;
     --ФОРМАТ В ЧИСЛО     
     IF EXL.VAL_TYPE = 'NUM' THEN
     		ole2.set_property(exl.cell.obj, 'NumberFormat', '#,##0.00');
     END IF;
     
     ole2.set_property(exl.cell.obj, 'Value', P_VAL);
  
     if exl.PrnBold then
        obj1 := ole2.get_obj_property(exl.cell.obj, 'Font'); -- (excell_cell - текущая ячейка)   	
        ole2.set_property(obj1, 'Bold',  1 );
        ole2.release_obj (obj1); -- надо делать релез для использ переменных
                                -- если не сделать -  получим ошибку при закрытии екселя     
     end if;	
    	
	--Форматы данных: 
	--ole2.set_property(excel_cell, 'NumberFormat', formatstring); 
	--formatstring - не ораклевый, а из экселя ;)).

    --Установить цвет ячейки------------------------
    if EXL.BACKGROUND is not null then
    	 obj1 :=OLE2.get_OBJ_property(exl.cell.obj, 'Interior');  
       OLE2.set_property(obj1, 'ColorIndex', EXL.BACKGROUND);
       OLE2.RELEASE_OBJ(obj1);
    end if;  

    --Установить рамку----------------------------
	  if exl.CELL_BORDER is not null then 
	  	obj1 := OLE2.get_OBJ_property(exl.cell.obj, 'Borders');		
    	OLE2.set_property(obj1, 'ColorIndex', exl.CELL_BORDER); -- exl.CELL_BORDER = магическое число....равно некой КОНСТАНТЕ что в екселе есть ==из дебагера узнается при прогоне дежурного макроса ....(ну в екселе самом)

    	OLE2.RELEASE_OBJ(obj1);
    end if;	
    
    -- Установить выравнивание по горизонту
   	if Exl.TEXT_ALIGN is not null then
   		 if Exl.TEXT_ALIGN = 'RIGHT' then
   		 	  OLE2.set_property(exl.cell.obj, 'HorizontalAlignment', - 4152 );
   		 end if;	  
   		 if Exl.TEXT_ALIGN = 'CENTER' then
   		 	  OLE2.set_property(exl.cell.obj, 'HorizontalAlignment', - 4108 );
   		 end if;	  
   		 if Exl.TEXT_ALIGN = 'LEFT' then
   		 	  OLE2.set_property(exl.cell.obj, 'HorizontalAlignment', - 4131 );
   		 end if;	  
   	end if;	 

	-- Установить выравнивание по ВЕРТИКАЛИ
   	if Exl.VERTICAL_ALIGN is not null then
   		 if Exl.VERTICAL_ALIGN = 'UP' then
   		 	  OLE2.set_property(exl.cell.obj, 'VerticalAlignment', - 4160 );
   		 end if;	  
   		 if Exl.VERTICAL_ALIGN = 'CENTER' then
   		 	  OLE2.set_property(exl.cell.obj, 'VerticalAlignment', - 4108 );
   		 	  OLE2.set_property(exl.cell.obj, 'WrapText',	TRUE);
   		 end if;	  
   		 if Exl.VERTICAL_ALIGN = 'DOWN' then
   		 	  OLE2.set_property(exl.cell.obj, 'VerticalAlignment', - 4107 );
   		 end if;	  
   	end if;	 
    -- ЗАДАТЬ ШРИФТ
    IF Exl.FONT_FAMILY is NOT NULL THEN
        obj1 := ole2.get_obj_property(exl.cell.obj, 'Font'); -- (excell_cell - текущая ячейка)   	
        ole2.set_property(obj1, 'Name', Exl.FONT_FAMILY);
        ole2.release_obj (obj1); 
    end if;	
    -- ЗАДАТЬ ВЫСОТУ ШРИФТА
    IF Exl.FONT_WEIGHT is NOT NULL THEN
        obj1 := ole2.get_obj_property(exl.cell.obj, 'Font'); -- (excell_cell - текущая ячейка)   	
        ole2.set_property(obj1, 'Size', Exl.FONT_WEIGHT);
        ole2.release_obj (obj1); 
    	 
    END IF;
    -- УСТАНОВИТЬ ЦВЕТ ШРИФТА
    IF Exl.FONT_COLOR is NOT NULL THEN
        obj1 := ole2.get_obj_property(exl.cell.obj, 'Font'); -- (excell_cell - текущая ячейка)   	
        ole2.set_property(obj1, 'ColorIndex', Exl.FONT_COLOR);
        ole2.release_obj (obj1); 
    END IF;
    -- ВЫСОТА СТРОКИ
    IF Exl.VAL_HIGH is NOT NULL THEN     --- обратите внимание - алгоритм!!
        args := OLE2.CREATE_ARGLIST;
        OLE2.ADD_ARG(args, r_row);   --- r_row = номер произвольной строки екселя 
        obj1 := ole2.get_obj_property(worksheet.obj, 'Rows',args); -- (excell_cell - текущая ячейка)   	
        OLE2.DESTROY_ARGLIST(args);
        ole2.set_property(obj1, 'RowHeight', Exl.VAL_HIGH );
        ole2.release_obj (obj1); 
    end if;    
 
...
Рейтинг: 0 / 0
Ole в Forms6i (Из формс в ексель)
    #34680309
Forms_Excel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Каким типом надо объявить EXL?
...
Рейтинг: 0 / 0
Ole в Forms6i (Из формс в ексель)
    #34680371
Forms_Excel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не понял комментарий к данному блоку, где тут искать excell_cell ?
IF Exl.FONT_WEIGHT is NOT NULL THEN
obj1 := ole2.get_obj_property(exl.cell.obj, 'Font'); -- (excell_cell - текущая ячейка)
ole2.set_property(obj1, 'Size', Exl.FONT_WEIGHT);
ole2.release_obj (obj1);

END IF;
...
Рейтинг: 0 / 0
Ole в Forms6i (Из формс в ексель)
    #34680476
Forms_Excel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ваш код:
IF Exl.VAL_HIGH is NOT NULL THEN --- обратите внимание - алгоритм!!
args := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(args, r_row); --- r_row = номер произвольной строки екселя
obj1 := ole2.get_obj_property(worksheet.obj, 'Rows',args); -- (excell_cell - текущая ячейка)
OLE2.DESTROY_ARGLIST(args);
ole2.set_property(obj1, 'RowHeight', Exl.VAL_HIGH );
ole2.release_obj (obj1);
end if;

Преобразовал к такому:
args := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(args, 5); --- r_row = íîìåð ïðîèçâîëüíîé ñòðîêè åêñåëÿ
obj1 := ole2.get_obj_property(worksheet, 'Rows',args); -- (excell_cell - òåêóùàÿ ÿ÷åéêà)
OLE2.DESTROY_ARGLIST(args);
ole2.set_property(obj1, 'RowHeight', 200 );
ole2.release_obj (obj1);

Т. е. у меня не worksheet.obj, а просто worksheet. Что такое worksheet.obj и как оно объявляется? Фрагменты кода где используется exl.cell.obj тоже не понял.
...
Рейтинг: 0 / 0
Ole в Forms6i (Из формс в ексель)
    #34682016
Фотография UK0IAI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я торопился и не мог перевести...

мои "exl.cell.obj" - это прикладные переменные (пользователльского типа), объявленные в прикладном пакадже с именем EXL и они имеют тип ole2.obj_type. Вам конечно можно юзать вашу worksheet которая объявлена в начале процедуры.

Я вам показал общие примеры - как форматировать ексел, какие конструкции (магические слова) при этом прописывать.
...
Рейтинг: 0 / 0
Ole в Forms6i (Из формс в ексель)
    #34683475
Forms_Excel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проделал различные комбинации, все тут приводить не буду, не смог ни закрасить ячейку ни рамку наложить и т.д., Excel даже не открывался. Получилось только высоту строки менять. Не могли бы Вы привести более подробный пример хотя для одного действия с ячейкой. Чтобы все в одной процедуре было. Буду очень признателен. Так же не понял что значит "это уже юзается тогда когда ЯЧЕЙКА екселя уже ВЫБРАНА"

PROCEDURE TO_EXCEL2 IS
application ole2.obj_type;
workbooks ole2.obj_type;
workbook ole2.obj_type;
worksheets ole2.obj_type;
worksheet ole2.obj_type;
cell ole2.obj_type;
obj1 ole2.obj_type;
cell1 ole2.obj_type;
args ole2.list_type;
BEGIN
--Êóñîê èíèöèàëèçàöèè
application:= ole2.create_obj('Excel.Application');
workbooks:= ole2.get_obj_property(application, 'Workbooks');
args:= ole2.create_arglist;

DEFAULT_VALUE('NO SET','GLOBAL.DIR');
IF :GLOBAL.DIR='NO SET' THEN
:GLOBAL.DIR:=Utility.Current_Dir();
END IF;
--ole2.add_arg(args,:GLOBAL.DIR||'ÆÓÐÍÀË_ÂÕÎÄßÙÈÕ.XLS');
ole2.add_arg(args,'C:\ORAPROG\Êèä\ÆÓÐÍÀË_ÂÕÎÄßÙÈÕ.XLS');

workbook:=OLE2.Invoke_Obj( workbooks,'Open', args);
ole2.destroy_arglist(args);
worksheets:=ole2.get_obj_property(workbook, 'Worksheets');

args := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG( args, 1 );
worksheet:=OLE2.GET_OBJ_PROPERTY( workbook, 'Worksheets',args);
ole2.destroy_arglist(args);

--ÂÑÒÀÂÊÀ ÒÅÊÑÒÀ  ß×ÅÉÊÓ
args:= ole2.create_arglist;
ole2.add_arg(args, 4);
ole2.add_arg(args, 2);
cell:= ole2.GET_OBJ_PROPERTY(Application, 'Cells', args);
ole2.Invoke(cell,'select');
ole2.destroy_arglist(args);
ole2.set_property(cell, 'Value','ASDASDASDASDASDASDASD');

--Óñòàíîâèòü öâåò ÿ÷åéêè------------------------
/*ÁÛËÎ:
if EXL.BACKGROUND is not null then
obj1 :=OLE2.get_OBJ_property(exl.cell.obj, 'Interior');
OLE2.set_property(obj1, 'ColorIndex', EXL.BACKGROUND);
OLE2.RELEASE_OBJ(obj1);
end if; */
--ÑÄÅËÀË
args:= ole2.create_arglist;
ole2.add_arg(args, 4);
ole2.add_arg(args, 2);
obj1 :=OLE2.get_OBJ_property(Application, 'Interior',ARGS);
ole2.destroy_arglist(args);
OLE2.set_property(obj1, 'ColorIndex', 10);
OLE2.RELEASE_OBJ(obj1);


ole2.set_property(application, 'Visible', True);

--ole2.release_obj(cell);
ole2.release_obj(worksheet);
ole2.release_obj(worksheets);
ole2.release_obj(workbook);
ole2.release_obj(workbooks);
ole2.release_obj(application);

EXCEPTION WHEN Others THEN
--ole2.release_obj(cell);
ole2.release_obj(worksheet);
ole2.release_obj(worksheets);
ole2.release_obj(workbook);
ole2.release_obj(workbooks);
ole2.release_obj(application);
raise;

END;
...
Рейтинг: 0 / 0
Ole в Forms6i (Из формс в ексель)
    #34684169
Фотография UK0IAI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот рабочий пример из инета,
а во вложенном файле - я даю образец формы. Это что то "нечто"...пофиксенное, но работает.

Общая тема - вывели в ексел, запустили запись макроса, кликаем разные форматы, потом возвращемся в листинг и ставим опции. Я это все вообще то из БД зачитывал, и форматировал когда то.


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
procedure from_inet is

   application     OLE2.OBJ_TYPE;
   workbook        OLE2.OBJ_TYPE;
   workbooks       OLE2.OBJ_TYPE;
   worksheet       OLE2.OBJ_TYPE;
   worksheets      OLE2.OBJ_TYPE;
   cell            OLE2.OBJ_TYPE;
   column          OLE2.OBJ_TYPE;
   row             OLE2.OBJ_TYPE;
   font            OLE2.OBJ_TYPE;

   args            OLE2.List_Type;
BEGIN
   application := OLE2.CREATE_OBJ('Excel.Application');
   OLE2.SET_PROPERTY(application, 'Visible', 'True');
   workbooks := OLE2.GET_OBJ_PROPERTY(application, 'Workbooks');
   workbook := OLE2.INVOKE_OBJ(workbooks,'Add');

   worksheets := OLE2.GET_OBJ_PROPERTY(workbook, 'Worksheets');
   worksheet := OLE2.INVOKE_OBJ(worksheets,'Add');

   --Set default for columns F, G and H 
   args := OLE2.CREATE_ARGLIST;
   OLE2.ADD_ARG(args, 'F:H');  --Columns F thru H
   column := OLE2.GET_OBJ_PROPERTY(worksheet, 'Columns', args);
   OLE2.DESTROY_ARGLIST(args);
   font := OLE2.GET_OBJ_PROPERTY(column, 'Font', args);
   OLE2.SET_PROPERTY(font, 'Name', 'Courier New');
   OLE2.SET_PROPERTY(font, 'Size',  12 );
   OLE2.SET_PROPERTY(font, 'Strikethrough', 'True');
   OLE2.SET_PROPERTY(font, 'Bold', 'True');
   OLE2.SET_PROPERTY(font, 'ColorIndex',  5 );  --Dark Blue
   OLE2.RELEASE_OBJ(font);   
   --Set width for columns F thru H to 25
   OLE2.SET_PROPERTY(column, 'ColumnWidth',  25 );
   OLE2.RELEASE_OBJ(column);

   --Set default for rows 1 through 20
   args := OLE2.CREATE_ARGLIST;
   OLE2.ADD_ARG(args, '1:20');  --Rows 1 thru 20
   row := OLE2.GET_OBJ_PROPERTY(worksheet, 'Rows', args);
   OLE2.DESTROY_ARGLIST(args);
   OLE2.SET_PROPERTY(row , 'RowHeight',  12 );
   OLE2.RELEASE_OBJ(row);

   --Set row 4 height
   args := OLE2.CREATE_ARGLIST;
   OLE2.ADD_ARG(args,  4 );  --Row 4
   row := OLE2.GET_OBJ_PROPERTY(worksheet, 'Rows', args);
   OLE2.DESTROY_ARGLIST(args);
   OLE2.SET_PROPERTY(row , 'RowHeight',  25 );
   OLE2.RELEASE_OBJ(row);

   --Set cell B4
   args := OLE2.CREATE_ARGLIST;
   OLE2.ADD_ARG(args,  4 );  --Row 4
   OLE2.ADD_ARG(args,  2 );  --Column B
   cell := OLE2.GET_OBJ_PROPERTY(worksheet, 'Cells', args);
   OLE2.DESTROY_ARGLIST(args);
   OLE2.SET_PROPERTY(cell, 'Value', 'Hello Excel!');
   font := OLE2.GET_OBJ_PROPERTY(cell, 'Font', args);
   OLE2.SET_PROPERTY(font, 'Name', 'Arial');
   OLE2.SET_PROPERTY(font, 'FontStyle', 'Italic');
   OLE2.SET_PROPERTY(font, 'Size',  20 );
   -- possible Underline values = 2, 4, 5, -4119
   OLE2.SET_PROPERTY(font, 'Underline', - 4119 );
   OLE2.SET_PROPERTY(font, 'Bold', 'True');
   OLE2.SET_PROPERTY(font, 'ColorIndex',  3 );  --Red
   OLE2.RELEASE_OBJ(font);
   OLE2.RELEASE_OBJ(cell);

   --Set cell F4
   args := OLE2.CREATE_ARGLIST; 
   OLE2.ADD_ARG(args,  4 );
   OLE2.ADD_ARG(args,  6 );
   cell := OLE2.GET_OBJ_PROPERTY(worksheet, 'Cells', args);
   OLE2.DESTROY_ARGLIST(args);
   OLE2.SET_PROPERTY(cell, 'Value', 'Good Bye Excel!');
   OLE2.RELEASE_OBJ(cell);

   --Set cell B7
   args := OLE2.CREATE_ARGLIST; 
   OLE2.ADD_ARG(args,  7 );
   OLE2.ADD_ARG(args,  3 );
   cell := OLE2.GET_OBJ_PROPERTY(worksheet, 'Cells', args);
   OLE2.DESTROY_ARGLIST(args);
   OLE2.SET_PROPERTY(cell, 'Value',  9 );
   OLE2.RELEASE_OBJ(cell);

   --Set cell C7
   args := OLE2.CREATE_ARGLIST; 
   OLE2.ADD_ARG(args,  7 );
   OLE2.ADD_ARG(args, 'B');
   cell := OLE2.GET_OBJ_PROPERTY(worksheet, 'Cells', args);
   OLE2.DESTROY_ARGLIST(args);
   OLE2.SET_PROPERTY(cell, 'Value',  4 );
   OLE2.RELEASE_OBJ(cell);

   --Set formula for cell D7
   args := OLE2.CREATE_ARGLIST; 
   OLE2.ADD_ARG(args, '7');
   OLE2.ADD_ARG(args, 'D');
   cell := OLE2.GET_OBJ_PROPERTY(worksheet, 'Cells', args);
   OLE2.DESTROY_ARGLIST(args);
   OLE2.SET_PROPERTY(cell, 'Formula', '=B7*C7');
   OLE2.RELEASE_OBJ(cell);

   OLE2.RELEASE_OBJ(worksheet);
   OLE2.RELEASE_OBJ(worksheets);
   OLE2.RELEASE_OBJ(workbook);
   OLE2.RELEASE_OBJ(workbooks);
   OLE2.RELEASE_OBJ(application);
EXCEPTION
    WHEN others THEN
       OLE2.Release_Obj( application );
       message('Error');
END;
...
Рейтинг: 0 / 0
Ole в Forms6i (Из формс в ексель)
    #34684335
Mainframe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В формзах, которые работают через аппссервер и на клиенте апплет (jinitiator), оле нету.
Хотя, если есть гарантия сидеть на Forms 6i долго, то сойдет.
...
Рейтинг: 0 / 0
Ole в Forms6i (Из формс в ексель)
    #34684810
Фотография -k2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MainframeВ формзах, которые работают через аппссервер и на клиенте апплет (jinitiator), оле нету.
Хотя, если есть гарантия сидеть на Forms 6i долго, то сойдет.

вот ужос-то, а у меня работает как-то наверное webutil неправильный :((
...
Рейтинг: 0 / 0
Ole в Forms6i (Из формс в ексель)
    #34684997
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да и на application сервере, если он Windows, OLE2 работает :=) Тругое дело да - не кроссплатформенное. А кто обещал другое :=)
...
Рейтинг: 0 / 0
Ole в Forms6i (Из формс в ексель)
    #34685131
Forms_Excel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо. С ячейкой вроде освоился. Назрел следующий вопрос. Если в книге заранее был включен вид разметка страниц, то данные вставляются очень долго (за секунду где то ячейки 3). Хотелось бы после заполнения данными листа включить этот вид программно. Сделал макрос в Екселе он выдал следующее:
ActiveWindow.View = xlPageBreakPreview
В дебагере посмотрел что xlPageBreakPreview равно 2. Но вот какой код для этого нужен не понял, метод тыка результата не дал. Пробовал примерно такое:

List_:= ole2.GET_OBJ_PROPERTY(Application, 'Workbook');
vid := OLE2.get_OBJ_property(List, 'ActiveWindow');
OLE2.set_property(vid, 'View', 2);
OLE2.RELEASE_OBJ(List_);
OLE2.RELEASE_OBJ(vid);

Не могу найти информацию какие могут быть парамерты в GET_OBJ_PROPERTY ('Workbook','Workbooks' и прочее). Также не ясна ситуация с OLE2.Invoke_Obj
...
Рейтинг: 0 / 0
Ole в Forms6i (Из формс в ексель)
    #34687390
Фотография UK0IAI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не очень понял, но может быть это?

Код: plaintext
1.
2.
ole2.set_property (app, 'ScreenUpdating', false);   --выключает

ole2.set_property (app, 'ScreenUpdating', TRUE);  --включает 

за одно покажу как читать из екселя (если мою форму открывали, то к ней подходит) :-))

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
function  GET (P_ROW NUMBER, P_COL NUMBER) return varchar2 IS
	prizn BOOLEAN;
	obj1 ole2.obj_type;
	r_val varchar2( 2000 );
BEGIN
	prizn := exl.cell_define(P_ROW, P_COL); 
             r_val := exl.cell_value;
	exl.close_cell;
	return (r_val);
END;	

function  cell_value return varchar2 is 
    buff   varchar2( 255 ); 
    begin
  
   if ole2.get_num_property (cell, 'Value') =  0  then
        buff:= ltrim(rtrim(ole2.get_char_property (cell.obj, 'Value')));
   else         		
        buff:= to_char(ole2.get_num_property (cell.obj, 'Value'));
   end if;
   return buff;
   exception when OTHERS then
      error_txt := 'OLE-000 Неопределенная ошибка OLE-EXCEL';
      return null;
end;
Не могу найти информацию какие могут быть парамерты в GET_OBJ_PROPERTY ('Workbook','Workbooks' и прочее). Также не ясна ситуация с OLE2.Invoke_Obj

Здесь юзаются все имена объектов екселя. Или иного OLE приложения. Например ворда или аутлука
...
Рейтинг: 0 / 0
Ole в Forms6i (Из формс в ексель)
    #34687895
Forms_Excel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот такой вид я хочу включит из формса после того как заполню лист данными

Модератор: Тема перенесена из форума "Oracle".
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Ole в Forms6i (Из формс в ексель)
    #39192772
voracle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pan159,

мне тоже иожно выслать ? заранее спасибо !!
maxusemail@gmail.com
...
Рейтинг: 0 / 0
Ole в Forms6i (Из формс в ексель)
    #39392992
Миша78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребята, не у кого нет ссылки или дистрибутива Oracle Forms 6i. Хочу изучить, нашел доки, а дистрибутива в инете нет.
mihnih78@inbox.ru

Спасибо.
...
Рейтинг: 0 / 0
Ole в Forms6i (Из формс в ексель)
    #39394633
Les
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Миша78,
если все еще нужно, пиши, выложу на яндекс диск

les21
yandex
ru
...
Рейтинг: 0 / 0
Ole в Forms6i (Из формс в ексель)
    #39395102
voracle,

pan159,

Вышлите мне тоже, если не трудно, библиотека нужная.

i.saxarock@gmail.com
...
Рейтинг: 0 / 0
Ole в Forms6i (Из формс в ексель)
    #39413031
Фотография pan159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно даже, библиотека эта древняя, как яйца динозавра. Не помню чья она. Не пользовался ей уже много лет.

Вот ссылка на ЯД: https://yadi.sk/d/G8ZsOvpd3EswMB

Замечания выводу данных в excel. Есть три популярных способа:

1. Эта библиотека. Работает через OLE, выводит медленно.
А вот с импортом данных из excel в oracle, насколько я помню, были большие проблемы.
Аналогичные программы я как то использовал для связки со Skype (автоматически набирал номер из формсов).


2. Через ADO. В excel пишется небольшая программа на VBA, которая может как вводить, так и выводить данные. Может запускать процедуры в базе. Foms вообще не нужен. Довольно удобно для многих случаев.
Тот же метод можно использовать для других офисных программ. Для ворда и почты я использовал довольно успешно (приходят по почте сообщения и записываются автоматически в базу).

3.Вывод в xml формате. Берете excel файл - прототип отчета, сохраняете его в формате xml. Открываете текстовым редактором, смотрите внутрь. А потом чик-чик режете его на три части: голова, тело, хвост. Тело будете генерировать из формсов или из пакета, голову и хвост приклеите. Работает очень быстро.
Этот метод хорош тем, что его можно использовать для всех версий формсов. Он собственно с формсами слабо связан. Я видел следующую реализацию: формирование отчета на сервере, размещение итогового файла где то на файл сервере, доступ к отчету через веб+эксель.
...
Рейтинг: 0 / 0
28 сообщений из 28, показаны все 2 страниц
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Ole в Forms6i (Из формс в ексель)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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