| 
 
	
		| Предыдущая тема :: Следующая тема |  
		| Автор | Сообщение |  
		| yankevich-2502 Участник
 
 
 Вступление в Клуб: 19.09.2019
 
 | 
			
				|  Чт Сен 19, 2019 15:34   Заливка ячейки Excel |   |  
				| Полезность: Нет оценки 
 |  
				| Как залить ячейки красным цветом? Использую
 
  	  | Код: |  	  | &xl.Set_Format_Range(p_tl_row == 8                -- Строка адреса верхней левой (top left) ячейки диапазона ,p_tl_col == 1                -- Колонка адреса верхней левой (top left) ячейки диапазона
 ,p_br_row == v_currow - 1      -- Строка адреса нижней правой (bottom right) ячейки диапазона
 ,p_br_col == 14               -- Колонка адреса нижней правой (bottom right) ячейки диапазона
 ,p_numFmtId == null            -- Идентификатор формата
 ,p_fontId == v_xl_font         -- Идентификатор фонта
 ,p_fillId == null            -- Идентификатор для тэга <fills />
 ,p_borderId == v_xl_border_all   -- Идентификатор окантовок
 ,p_vertical == null            -- Способ выравнивания в ячейке по вертикали.
 ,p_horizontal == null         -- Способ выравнивания в ячейке по горизонтали.
 ,p_wrapText == null            -- Необходимость переноса данных в ячейке по словам
 ,p_indent == null            -- Количество пространства (нормальной стиль шрифта) отступа для текста в ячейке.
 ,p_shrinkToFit == null         -- Автоподбор размеров строки / столбца: 1 - да, 0 - нет
 ,p_sheet == 1               -- Номер листа
 );
 v_xl_font := &xl.get_font (p_name == 'Arial', p_fontsize == 9, p_rgb == '000000', p_bold == false);
 v_xl_format := &xl.get_numFmt('###,###,###,###,##0');
 v_xl_border_all := &xl.get_border(p_top == &xl.xl_b_thin, p_bottom == &xl.xl_b_thin, p_left == &xl.xl_b_thin, p_right == &xl.xl_b_thin);
 | 
 
 А как задать p_fillId?
 |  |  
		|  |  
		| Матвеев Евгений Профи
 
 
 Вступление в Клуб: 31.01.2012
 
 | 
			
				|  Пт Сен 20, 2019 00:25   Re: Заливка ячейки Excel |   |  
				| Полезность: 1 
 |  
				|  	  | yankevich-2502 пишет: |  	  | Как залить ячейки красным цветом? Использую
 
  	  | Код: |  	  | &xl.Set_Format_Range(p_tl_row == 8                -- Строка адреса верхней левой (top left) ячейки диапазона ,p_tl_col == 1                --
 ...
 ,p_fillId == null            -- Идентификатор для тэга <fills />
 ...
 ,p_borderId == v_xl_border_all   -- == &xl.xl_b_thin, p_left == &xl.xl_b_thin, p_right == &xl.xl_b_thin);
 | 
 
 А как задать p_fillId?
 | 
 
 Может так попробовать?)
 
  	  | Код: |  	  | ,p_fillId ==  &xl.get_fill_back_color('FF0000') | 
 
 не уверен что FF0000 красный правда
 
 код можно посмотреть в VBA макросе заливки красным... и заменить)
 |  |  
		|  |  
		| Матвеев Евгений Профи
 
 
 Вступление в Клуб: 31.01.2012
 
 | 
			
				|  Пт Сен 20, 2019 10:30    |   |  
				| Полезность: Нет оценки 
 |  
				| Посмотрел на схеме Примеров использования p_fillId вроде бы полно... нужно проверять
 
 
  	  | Код: |  	  | , p_fillId   == [OOXML]::[API_XL].get_fill_back_color(
 
 &xl.Set_Format_Range(num_row, first2, num_row, first2 + 1, p_fillId == iFill);
 
 &xl.Set_Format_Range(2, par_num_out_col, 2, par_num_out_col, p_fillId == iFill);
 
 &xl.Set_Format_Range(cur_row,1,cur_row,19,p_borderId == iBorderAll,p_fillId == iBackColor, p_sheet==cur_sheet);
 
 &xl.Set_Format_Range(9,1,9,5,p_fillId == &xl.get_fill_back_color( 'D9D9D9' )); -- серый
 
 
 | 
 
 Касательно параметризации именно красного цвета
 смотрим описание
 
  	  | Код: |  	  | function get_fill_back_color
 /*   Получение из кэша идентификатора для тэга <fills />.
 При отсутствии в кэше новое значение в него добавляется.
 */
 ( p_RGB            varchar2      := null
 /*   16-тиричное символьное значение
 "Прозрачность Красный Зелёный Синий" (alpha red green blue)
 (например, 'FFFF0000')
 URL=http://en.wikipedia.org/wiki/RGBA_color_space
 */
 )
 /* Возвращается идентификатор для тэга <fills /> */
 return integer;
 
 
 function get_fill_back_color
 ( p_RGB            varchar2      := null
 )
 return integer is
 begin
 return &xl.get_fill
 ( p_patternType      == &xl.xl_fs_Solid
 , p_fgRGB         == p_RGB
 );
 end;
 
 function get_fill
 /*   Получение из кэша идентификатора для тэга <fills />.
 При отсутствии в кэше новое значение в него добавляется.
 */
 ( p_patternType      varchar2
 /* тип см xl_fs_...*/
 , p_fgRGB         varchar2      := null
 /*   16-тиричное символьное значение
 "Прозрачность Красный Зелёный Синий" (alpha red green blue)
 (например, 'FFFF0000')
 URL=http://en.wikipedia.org/wiki/RGBA_color_space
 */
 , p_bgRGB         varchar2      := null
 /*   16-тиричное символьное значение
 "Прозрачность Красный Зелёный Синий" (alpha red green blue)
 (например, 'FFFF0000')
 URL=http://en.wikipedia.org/wiki/RGBA_color_space
 */
 )
 /* Возвращается идентификатор для тэга <fills /> */
 return integer;
 
 function get_fill
 ( p_patternType   varchar2
 , p_fgRGB      varchar2   := null
 , p_bgRGB      varchar2   := null
 )
 return   integer
 is
 t_ind   integer;
 zFill   tp_fill;
 begin
 if zWrkBook.fills.count() > 0 then
 for f in 0 .. zWrkBook.fills.count() - 1 loop
 zFill   := zWrkBook.fills( f );
 if   zFill.patternType = p_patternType then
 if   coalesce( zFill.fgRGB, 'x' ) = coalesce(upper(p_fgRGB),'x')
 and   coalesce( zFill.bgRGB, 'x' ) = coalesce(upper(p_bgRGB),'x')
 then
 return f;
 end if;
 end if;
 end loop;
 zFill := null;
 end if;
 t_ind   := zWrkBook.fills.count();
 
 zFill.patternType   := p_patternType;
 zFill.fgRGB         := upper( p_fgRGB );
 zFill.bgRGB         := upper( p_bgRGB );
 
 zWrkBook.fills( t_ind )   := zFill;
 return t_ind;
 end;
 
 | 
 
 Судя по описанию за красный отвечают 3 и 4 символы 00FF0000
 
 смотрим примеры
 
 
  	  | Код: |  	  | -- Вариант без указания Прозрачность alpha
 iFill   := &xl.get_fill_back_color('FF0000'); --Красный цвет.
 
 | 
 
 не уверен что FF0000 красный правда ... скорее всего это таки красный цвет, плюс как вариант попробовать градации красного 00FF0000 AAFF0000 FFFF0000
 |  |  
		|  |  
		| yankevich-2502 Участник
 
 
 Вступление в Клуб: 19.09.2019
 
 | 
			
				|  Пт Сен 20, 2019 14:24    |   |  
				| Полезность: Нет оценки 
 |  
				| Спасибо |  |  
		|  |  
		|  |  
  
	| 
 
 | Вы не можете начинать темы Вы не можете отвечать на сообщения
 Вы не можете редактировать свои сообщения
 Вы не можете удалять свои сообщения
 Вы не можете голосовать в опросах
 
 |  |