-
Коллеги!
1. Суть вопроса кратко - как заставить Excel автоматически определять высоту рядов, чтобы влезало полностью содержимое ячеек, если А) текст в ячейке отображается с переносом и Б) ячейка является головой (левой ячейкой) горизонтального объединения нескольких ячеек.
2. Подробнее. Если: а. Открыть новый ексель. б. Не трогать в нем высоты рядов. в. Установить флаг переноса для тела ячейки. г. Вбить в ячейку длинный текст , то высота ряда с ячейкой автоматически увеличится, чтобы весь текст ячейки был виден.
Если же текст вбивать в ячейку А1, с условием, что А1 и В1 объединены, то высота ряда не увеличится и перенесенный текст не будет виден. Не работает даже команда "Формат / Строка / Автоподбор высоты".
"Рисуя" нормативные формы я всегда старался, чтобы потенциальная длинная текстовая информация оказывалась в ячейках без объединений. Но вот тут форма попалась, в которой никак не получается придерживаться обозначенного принципа.
3. Вопрос. Как кто решает подобную проблему?
4. Из вариантов я сам вижу только следующее. Создать алгоритм, который разбивает текст переносами полностью аналогично тому, как это делает сам ексель, а потом явно выставлять высоту. Может изящнее есть путь?
Спасибо!
ЗЫ Версия екселя не важна, везде, где я смотрел так: на 2003, 2007, 2012. Более новых у меня нет.
-
>Может изящнее есть путь? Извиняюсь за оффтопик - написать свой эксель.
-
> dmk © (11.05.17 17:49) [1] > >Может изящнее есть путь? > Извиняюсь за оффтопик - написать свой эксель.
Не, не хочу)
В действительности мой п. 4 я не сам придумал. Лет десять назад смотрел исходники какого-то генератора отчетов. Сейчас не вспомню. Там как раз делалось именно так - был свой алгоритм переноса, который совпадал на 99.(9)% с екселевским.
Сегодня же решил спросить - может кто-то как-то еще с этой проблемой справляется.
-
Открыть эксель, запустить магнитофон, отформатировать ячейку "чтоб влазило все", потом скопировать в макрос, который и запускать хоть из Делфей, - не пробовал ?
-
> MsGuns © (11.05.17 19:13) [3] > Открыть эксель, запустить магнитофон,
Не пойму тебя. Что записывать то? Как я сам двигаю мышкой высоту ряда? Так это и пользователь может)) Или как я вызываю команду Excel, чтобы он выставил высоту? Так сам Excel не умеет это делать для А) ячеек с переносами и Б) ячеек, входящих в объединение.
-
-
Тимохов Дима © (11.05.17 21:19) [4] Определись что надо:
-Подбор размера шрифта под ширину ячейки (с/без переноса) -Автоматическое выставление ширины колонки под максимальный текст (с/без переноса)
PS Для объединенных ячеек правила такие же
-
> MsGuns © (12.05.17 00:15) [6] > Тимохов Дима © (11.05.17 21:19) [4] > Определись что надо:
я же вроде написал) нужен автоматический подбор высоты ряда так, чтобы полностью влезал перенесенный текст в *объединенной* ячейке. > Styx © (11.05.17 23:39) [5] > Есть вот такой вариант: https://excelribbon.tips.net/T010563_Automatic_Row_Height_For_Merged_Cells_with_Text_Wrap. > html
Гениально! Отличная идея)) В голову не приходила. Попробую ее применить в своем случае. Мой случай в том, что мною когда-то был написан генератор BIFF8 (это формат xls, у xlsx формат другой) - т.е. создаю файл сам и пишу прямо в бинарник (описание формата брал тогда в Open Office, ибо в 2006 году официального описания от MS не было). Там для ряда есть флажок: трогал кто-то высоту или не трогал. Если не трогал, то при открытии Ексель выставляет высоту, если... ячейка не объединена. Поэтому можно воспользоваться предложенным способом - генерить фейковые колонки. Только, видимо, надо будет потом через OLT залезать в созданный файл и очищать созданные колонки. Спасибо!
-
> Styx © (11.05.17 23:39) [5]
Сергей, я, полагаю, ты, давая хорошие ссылки по теме, в теме и сам разбираешься.
Скажи, пожалуйста, ты сталкивался когда-нибудь с задачей выставить ширины колонок с точностью до мм?
В указанной ссылке есть материал по теме, я так и делаю - перевожу мм в эти чтобимнеладно было условные символы базового шрифта. Но вот беда, всегда есть отличия на доли мм.
Например, если сделать 50 колонок по 5 мм, то в итоге окажется на 250 мм, а 248 мм. А вот, если задать 50 по 4 мм, то будет на 200, а 202 мм. Т.е. "гуляет" туда-сюда.
Я так понял, что причина в том, что ексель округляет до pixel (это видно, когда руками двигаешь ширину колонок). В итоге ширина колонки в условном символе может быть, например, 0.73, а следующее значение 0.81 и т.д. - скачками. Поэтому и получается перебег или недобег ширины каждой колонки.
Собстно вопрос, был ли у тебя успешный опыт выставления ширин колонок с точности до мм?
-
-
> Styx © (15.05.17 02:00) [9] > Нет, такого опыта нету, но, судя по тому, что пишет народ > - в Ёкселе с этим всё плохо. Вот, например:
Да не то слово, плохо. Но была надежда, что это у меня руки кривые и читать я не умею... Надежда пала.
-
Ну, если очень нужно, я думаю, можно сочинить какое-нибудь решение. Типа определить эту самую дискретность и считать с такой же, соответственно добавляя недостающие минимальные доли или, наоборот, пропуская их каждые n колонок. Эдакие "високосные" колонки будут :) Но это, конечно, изврат...
-
> Styx © (15.05.17 21:08) [11] > Ну, если очень нужно, я думаю, можно сочинить какое-нибудь > решение. Типа определить эту самую дискретность и считать > с такой же, соответственно добавляя недостающие минимальные > доли или, наоборот, пропуская их каждые n колонок. Эдакие > "високосные" колонки будут :) Но это, конечно, изврат...
Я тоже об этом думал. И пришел к аналогичному выводу - изврат)))
Все же градация до какого-то условного pixel выглядит странно, когда можно добиться на современном принтере точности до сотых миллиметра...
Странно, что такая очевидная вещь в Екселе сделана плохо. Я не проверял самые последние версии... Может там сделано.
|