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

Изменение высоты строки в Excel

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Справочник PL/PLUS: Функции, примеры, приёмы
Предыдущая тема :: Следующая тема  
Автор Сообщение
cymtu
Участник - экстремал


Вступление в Клуб: 26.03.2008
СообщениеЧт Июл 08, 2010 08:38   Изменение высоты строки в Excel Ответить с цитатой
Полезность: Нет оценки
Кто - нибудь может уже занималься разработкой функций изменения высоты в строки Excel, наподобие функций SET_COLUMN_WIDTH??? Поделитесь кодом, а то разрабатывать лень Rolling Eyes Wink.
P.S.
И совсем уж экзотический вариант может кто разрабатывал функцию для считывания высоты строки в Excel??? То же было бы неплохо подкинуть код.
r00st
Эксперт


Вступление в Клуб: 14.09.2007
СообщениеЧт Июл 08, 2010 08:52    Ответить с цитатой
Полезность: 2
Код:
excel.cmd('Sheet.Rows ("' || :row || '").RowHeight = :height');
jeel
Участник


Вступление в Клуб: 26.06.2008
СообщениеЧт Июл 08, 2010 08:58    Ответить с цитатой
Полезность: 1
Можно сделать через скрипты Visual Basic:
Изменение высоты строки примерно будет выглядеть так:
[EXCEL].cmd('sheet.cells.RowHeight = 20');
cymtu
Участник - экстремал


Вступление в Клуб: 26.03.2008
СообщениеЧт Июл 08, 2010 09:03    Ответить с цитатой
Полезность: Нет оценки
Как мне подсказали оказывается такая функция уже есть в пакете Excel называется SET_ROW_HEIGHT, но почему то она не указана в документаций.
Andry
Участник - экстремал


Вступление в Клуб: 14.01.2009
СообщениеСр Окт 06, 2010 16:47    Ответить с цитатой
Полезность: Нет оценки
Была ли у кого-нибудь проблема с тем неверной установкой высоты строки?
ни через
EXCEL.SET_ROW_HEIGHT(20,20,100);
ни через
EXCEL.AutoFitRow(20,1);

- каждый раз высота сбрасывается самостоятельно в ненужный мне маленький размер.
omela
Участник со стажем


Вступление в Клуб: 01.07.2008
СообщениеВс Ноя 14, 2010 22:04    Ответить с цитатой
Полезность: Нет оценки
Andry пишет:
Была ли у кого-нибудь проблема с тем неверной установкой высоты строки?
ни через
EXCEL.SET_ROW_HEIGHT(20,20,100);
ни через
EXCEL.AutoFitRow(20,1);

- каждый раз высота сбрасывается самостоятельно в ненужный мне маленький размер.


excel.cmd ('Sheet.Rows("'||row||'").RowHeight = Sheet.Rows("'||row||'").RowHeight * ' || to_char(ceil(length(TEXT) /N)));

где
TEXT - это текст, который выводите
N - число, ширина колонки, на которую стоит ориентироваться, чтобы правильно подобрать высоту строки
_________________
Трехглазый передает привет банкирам, и желает им долгого здравия (:.
.СергейПанин
Участник - экстремал


Вступление в Клуб: 24.06.2008
СообщениеПн Ноя 15, 2010 08:41    Ответить с цитатой
Полезность: Нет оценки
omela пишет:
excel.cmd ('Sheet.Rows("'||row||'").RowHeight = Sheet.Rows("'||row||'").RowHeight * ' || to_char(ceil(length(TEXT) /N)));


не отработает если строка состоит из:
ШШШШШШШШШШШШШШШШШШ
или
IIIIIIIIIIIIIIIIIIII
omela
Участник со стажем


Вступление в Клуб: 01.07.2008
СообщениеВт Ноя 16, 2010 21:20    Ответить с цитатой
Полезность: Нет оценки
DC_Sergey пишет:
omela пишет:
excel.cmd ('Sheet.Rows("'||row||'").RowHeight = Sheet.Rows("'||row||'").RowHeight * ' || to_char(ceil(length(TEXT) /N)));


не отработает если строка состоит из:
ШШШШШШШШШШШШШШШШШШ
или
IIIIIIIIIIIIIIIIIIII

Что-то я такого не заметила. Только что попробовала - все ОК. Все переносит.
А что буква "Ш" или "I" перестали быть символом в тексте? Мы же по сути тут length(TEXT) считаем длину текста и все равно что там за символы.
_________________
Трехглазый передает привет банкирам, и желает им долгого здравия (:.
.СергейПанин
Участник - экстремал


Вступление в Клуб: 24.06.2008
СообщениеСр Ноя 17, 2010 09:18    Ответить с цитатой
Полезность: Нет оценки
omela пишет:
А что буква "Ш" или "I" перестали быть символом в тексте? Мы же по сути тут length(TEXT) считаем длину текста и все равно что там за символы.


гы гы гы Very Happy а я думал length('II') и length('ШШ') разные по длине... у первго 2 сиивола, а у второго - символа 2 Very Happy

я о том, что, к примеру, если у Вас ширина ячейки = 10
строка из 'IIIIIIIIII' уместится в одну строчку
а 'ШШШШШШШШШШ' уже в 2.
.СергейПанин
Участник - экстремал


Вступление в Клуб: 24.06.2008
СообщениеЧт Фев 17, 2011 09:49   мысли с утра... Ответить с цитатой
Полезность: 1
т.к. автоподбор высоты не работает если есть объедиенния в ячейках ( иначе все проблемм не было ) можно поступить так :
- в шаблоне создаем tmp-лист ( переносить по словам у ячеек - "Да" )
- при формировании строки, параллельно на tmp-лист пишем значения в необъединенные ячейки
- затем
Код:

EXCEL.CMD('My_Height = Sheet.Rows("'||i||':'||i||'").RowHeight');
EXCEL.Open_Sheet(1);
EXCEL.CMD('Sheet.Rows("'||i||':'||i||'").RowHeight = My_Height);

-----
Скандалы, интриги, расследования ? всмысле замечания, предложения ?
omela
Участник со стажем


Вступление в Клуб: 01.07.2008
СообщениеСр Мар 23, 2011 22:21   Re: мысли с утра... Ответить с цитатой
Полезность: Нет оценки
.СергейПанин пишет:
т.к. автоподбор высоты не работает если есть объедиенния в ячейках ( иначе все проблемм не было ) можно поступить так :
- в шаблоне создаем tmp-лист ( переносить по словам у ячеек - "Да" )
- при формировании строки, параллельно на tmp-лист пишем значения в необъединенные ячейки
- затем
Код:

EXCEL.CMD('My_Height = Sheet.Rows("'||i||':'||i||'").RowHeight');
EXCEL.Open_Sheet(1);
EXCEL.CMD('Sheet.Rows("'||i||':'||i||'").RowHeight = My_Height);

-----
Скандалы, интриги, расследования ? всмысле замечания, предложения ?


А зачем на другом листе? Почему нельзя дублировать данные объеденных ячеек на том же листе, но в другой колонке, где ячейки не объеденные, стоит перенос по словам и сделать на этой колонке автофит, а потом эту колонку удалить в конце вывода отчета.
_________________
Трехглазый передает привет банкирам, и желает им долгого здравия (:.
lki
Участник со стажем


Вступление в Клуб: 18.03.2008
СообщениеПн Дек 19, 2011 17:15    Ответить с цитатой
Полезность: Нет оценки
есть у меня один могильничек...(с)
Код:
--Объединение ячеек в строке с автоподбором высоты
--x строка, y1..y2 интервал объединяемых в строке ячейки
procedure AutoFitMerge(x in integer,y1 in integer,y2 in integer)
is
begin
excel.print_array;
   excel.cmd(
'With Sheet.Range(Sheet.Cells('||x||','||y1||'),Sheet.Cells('||x||','||y2||'))
 .Select
 If .MergeCells=true Then
  .MergeCells=false
 End If
 al=.HorizontalAlignment
 .HorizontalAlignment=7
 .WrapText=true
 .EntireRow.AutoFit
End With
i=Sheet.Rows("'||x||':'||x||'").RowHeight
With Sheet.Range(Sheet.Cells('||x||','||y1||'),Sheet.Cells('||x||','||y2||'))
 .HorizontalAlignment=al
 .WrapText=true
 .MergeCells=true
End With
sheet.Rows("'||x||':'||x||'").RowHeight=i');
excel.print_array;
end;

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

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