Конференция "Прочее" » Поделитесь, пожалуйста, опытом работы с Excel
 
  • Тимохов Дима © (11.05.17 14:30) [0]
    Коллеги!

    1. Суть вопроса кратко - как заставить Excel автоматически определять высоту рядов, чтобы влезало полностью содержимое ячеек, если А) текст в ячейке отображается с переносом и Б) ячейка является головой (левой ячейкой) горизонтального объединения нескольких ячеек.

    2. Подробнее.
    Если:
      а. Открыть новый ексель.
      б. Не трогать в нем высоты рядов.
      в. Установить флаг переноса для тела ячейки.
      г. Вбить в ячейку длинный текст
    , то высота ряда с ячейкой автоматически увеличится, чтобы весь текст ячейки был виден.

    Если же текст вбивать в ячейку А1, с условием, что А1 и В1 объединены, то высота ряда не увеличится и перенесенный текст не будет виден. Не работает даже команда "Формат / Строка / Автоподбор высоты".

    "Рисуя" нормативные формы я всегда старался, чтобы потенциальная длинная текстовая информация оказывалась в ячейках без объединений. Но вот тут форма попалась, в которой никак не получается придерживаться обозначенного принципа.

    3. Вопрос.
    Как кто решает подобную проблему?

    4. Из вариантов я сам вижу только следующее. Создать алгоритм, который разбивает текст переносами полностью аналогично тому, как это делает сам ексель, а потом явно выставлять высоту.
    Может изящнее есть путь?

    Спасибо!

    ЗЫ Версия екселя не важна, везде, где я смотрел так: на 2003, 2007, 2012. Более новых у меня нет.
  • dmk © (11.05.17 17:49) [1]
    >Может изящнее есть путь?
    Извиняюсь за оффтопик - написать свой эксель.
  • Тимохов Дима © (11.05.17 17:57) [2]

    > dmk ©   (11.05.17 17:49) [1]
    > >Может изящнее есть путь?
    > Извиняюсь за оффтопик - написать свой эксель.


    Не, не хочу)

    В действительности мой п. 4 я не сам придумал. Лет десять назад смотрел исходники какого-то генератора отчетов. Сейчас не вспомню. Там как раз делалось именно так - был свой алгоритм переноса, который совпадал на 99.(9)% с екселевским.

    Сегодня же решил спросить - может кто-то как-то еще с этой проблемой справляется.
  • MsGuns © (11.05.17 19:13) [3]
    Открыть эксель, запустить магнитофон, отформатировать ячейку "чтоб влазило все", потом скопировать в макрос, который и запускать хоть из Делфей, - не пробовал ?
  • Тимохов Дима © (11.05.17 21:19) [4]

    > MsGuns ©   (11.05.17 19:13) [3]
    > Открыть эксель, запустить магнитофон,

    Не пойму тебя.
    Что записывать то?
    Как я сам двигаю мышкой высоту ряда? Так это и пользователь может))
    Или как я вызываю команду Excel, чтобы он выставил высоту? Так сам Excel не умеет это делать для А) ячеек с переносами и Б) ячеек, входящих в объединение.
  • Styx © (11.05.17 23:39) [5]
  • MsGuns © (12.05.17 00:15) [6]
    Тимохов Дима ©   (11.05.17 21:19) [4]
    Определись что надо:

    -Подбор размера шрифта под ширину ячейки (с/без переноса)
    -Автоматическое выставление ширины колонки под максимальный текст (с/без переноса)

    PS Для объединенных ячеек правила такие же
  • Тимохов Дима © (12.05.17 14:04) [7]

    > 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 залезать в созданный файл и очищать созданные колонки.

    Спасибо!
  • Тимохов Дима © (13.05.17 12:49) [8]

    > 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]
    Нет, такого опыта нету, но, судя по тому, что пишет народ - в Ёкселе с этим всё плохо. Вот, например: https://social.technet.microsoft.com/Forums/office/en-US/369fba00-8735-43a5-8c29-86ed6b7bcf0e/excel-2010-row-height?forum=excel
  • Тимохов Дима © (15.05.17 10:38) [10]

    > Styx ©   (15.05.17 02:00) [9]
    > Нет, такого опыта нету, но, судя по тому, что пишет народ
    > - в Ёкселе с этим всё плохо. Вот, например:

    Да не то слово, плохо.
    Но была надежда, что это у меня руки кривые и читать я не умею...
    Надежда пала.
  • Styx © (15.05.17 21:08) [11]
    Ну, если очень нужно, я думаю, можно сочинить какое-нибудь решение. Типа определить эту самую дискретность и считать с такой же, соответственно добавляя недостающие минимальные доли или, наоборот, пропуская их каждые n колонок. Эдакие "високосные" колонки будут :) Но это, конечно, изврат...
  • Тимохов Дима © (16.05.17 19:02) [12]

    > Styx ©   (15.05.17 21:08) [11]
    > Ну, если очень нужно, я думаю, можно сочинить какое-нибудь
    > решение. Типа определить эту самую дискретность и считать
    > с такой же, соответственно добавляя недостающие минимальные
    > доли или, наоборот, пропуская их каждые n колонок. Эдакие
    > "високосные" колонки будут :) Но это, конечно, изврат...


    Я тоже об этом думал. И пришел к аналогичному выводу - изврат)))

    Все же градация до какого-то условного pixel выглядит странно, когда можно добиться на современном принтере точности до сотых миллиметра...

    Странно, что такая очевидная вещь в Екселе сделана плохо.
    Я не проверял самые последние версии... Может там сделано.
 
Конференция "Прочее" » Поделитесь, пожалуйста, опытом работы с Excel
Есть новые Нет новых   [134431   +10][b:0][p:0]