OOXML автоподбор высоты объединённых ячеек XLSX
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
mikeya1 Участник
Вступление в Клуб: 26.11.2023
|
Пн Ноя 27, 2023 20:03  OOXML автоподбор высоты объединённых ячеек XLSX |
|
Полезность: Нет оценки
|
Столкнулся с проблемой автоподбора высоты многострочного текста, хранящегося в объединённой ячейке. Имеющиеся функции get_height_row и get_height_row_with_font работают с большой погрешностью.
В идеале, скопировал текст в одну ячейку, задал ей общую ширину группы объединённых ячеек. Но после автоподстройки высоты строки не получается считать значение - всегда получаю стандартные 15. Я так понимаю, что это связано с тем, что высота временная и после удаления текста в ячейке её высота сразу схлопывается до 15.
А вот если строке принудительно задать значение, то оно будет постоянным и не схлапываться при удалении текста.
Кто смог решить данную проблему? Подскажите в какую сторону смотреть. |
|
 |
Эмиралька Эксперт
Вступление в Клуб: 09.11.2015
|
Вт Ноя 28, 2023 16:34  Re: OOXML автоподбор высоты объединённых ячеек XLSX |
|
Полезность: Нет оценки
|
mikeya1 пишет: | Столкнулся с проблемой автоподбора высоты многострочного текста, хранящегося в объединённой ячейке. Имеющиеся функции get_height_row и get_height_row_with_font работают с большой погрешностью.
В идеале, скопировал текст в одну ячейку, задал ей общую ширину группы объединённых ячеек. Но после автоподстройки высоты строки не получается считать значение - всегда получаю стандартные 15. Я так понимаю, что это связано с тем, что высота временная и после удаления текста в ячейке её высота сразу схлопывается до 15.
А вот если строке принудительно задать значение, то оно будет постоянным и не схлапываться при удалении текста.
Кто смог решить данную проблему? Подскажите в какую сторону смотреть. |
Код: |
/** Функция преобразует ширину ячейки в пикселях в воспринимаемое функционалом OOXML значение в символах.
* p2s - это сокращение от PixelsToSymbols.
*
* Ширина (но не высота) ячеек в Excel измеряется в символах (а в скобках отображается ширина в пикселях).
* 1 символ - это среднее число знаков цифр 0-9 стандартного шрифта, помещающихся в ячейке.
* В ячейке шириной в 10 символов отображается весь набор цифр.
*
* И для информации: 1 пиксель - это 1/72 от дюйма;
* 1 дюйм - это 1/2.54 от сантиметра.
*/
function p2s(p_pix integer) return number is
begin
if p_pix < 12 then
return round(p_pix / 12, 2);
end if;
return round(1 + ( p_pix - 12 ) / 7, 2);
end;
-- Функция приблизительно определяет, во сколько строк влезет указанный в p_text текст
function GetRowsOfText(
p_num integer
, p_text varchar2
) return integer is
recStyle tp_rec_style;
iWidth integer;
iRet integer;
begin
recStyle := ltiStyles(p_num);
iWidth := recStyle.i_width * recStyle.i_size;
iWidth := p2s(iWidth);
iRet := ceil(nvl(length(p_text), 0) / iWidth);
debug_pipe('текст "'||p_text||'" в колонке '||p_num||' будет располагаться на '||iRet||' строк', 10);
return iRet;
end;
| .
Из кода оперативного отчёта "Выписка для ФНС" |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|