Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
cymtu Участник - экстремал
Вступление в Клуб: 26.03.2008
|
Чт Июл 08, 2010 08:38  Изменение высоты строки в Excel |
|
Полезность: Нет оценки
|
Кто - нибудь может уже занималься разработкой функций изменения высоты в строки Excel, наподобие функций SET_COLUMN_WIDTH??? Поделитесь кодом, а то разрабатывать лень .
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) считаем длину текста и все равно что там за символы. |
гы гы гы а я думал length('II') и length('ШШ') разные по длине... у первго 2 сиивола, а у второго - символа 2
я о том, что, к примеру, если у Вас ширина ячейки = 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;
|
как-то так, может кому поможет |
|
 |
|