CftClub.ru
Клуб специалистов ЦФТ-Банк

Заливка ячейки Excel

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Справочник PL/PLUS: Функции, примеры, приёмы
Предыдущая тема :: Следующая тема  
Автор Сообщение
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    Ответить с цитатой
Полезность: Нет оценки
Спасибо
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Справочник PL/PLUS: Функции, примеры, приёмы Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru