Главная » Макросы для Excel » Программно задать ширину столбца Excel в пикселах (Width, ColumnWidth) | ||||
Как программно (макросом) задать ширину столбца в пикселах Вроде бы — элементарное действие… но нет, здесь Microsoft нам усложнил задачу. Получить ширину столбца в пикселах — не проблема, для этого есть свойство Width: MsgBox "Ширина столбца с активной ячейкой: " & ActiveCell.Width Но, увы, это свойство доступно только для чтения, — а для назначения ширины столбца нам придётся изменять значение другого свойства — ColumnWidth, которое задаётся отнюдь не в пикселах, а в символах (количестве знаков, которые поместятся в ячейке) Результат — мы не можем со 100% точностью задать ширину столбца, чтобы она была равна заданному количеству пикселей. Стал искать решение проблемы на сайте Microsoft — и увидел чудный макрос, который сначала ставит приблизительную ширину, и потом В ЦИКЛЕ подгоняет (увеличивает или уменьшает) значение ширины, до тех пор, пока результат не приблизитс к ожидаемому. Я и сам пользовался подобным решением — для макроса вставки картинок в Excel, но когда пришла пора реализовать то же самое в универсальной программе для вставки изображений в Excel, понял, что надо искать более удобный способ К тому же, подбор ширины столбца в цикле — очень медленный способ. И вот что получилось: Sub SetColumnWidth() w = 100 ' желаемая ширина столбца в пикселах cw = IIf(w > 9, (w / 0.75 - 5) / 7, w / 9) ' вычисляем ширину в символах ActiveCell.ColumnWidth = cw ' устанавливаем новую ширину MsgBox "Новая ширина: " & ActiveCell.Width ' смотрим, что получилось End Sub Запустив этот макрос, вы увидите, что установленная ширина столбца почти совпадает с исходной. Небольшое расхождение обычно некритично (всё-таки, Excel — это не графический редактор, где важна точность) Еще один макрос — для тестирования применённого способа перевода Width в ColumnWidth: Sub Test_ColWidth() For w = 1 To 400 Step 2 ' желаемая ширина столбца cw = IIf(w > 9, (w / 0.75 - 5) / 7, w / 9) ' вычисляем ColumnWidth ActiveCell.ColumnWidth = cw ' и применяем к активной ячейке Debug.Print "Желаемая ширина = " & w, "полученная ширина = " & ActiveCell.Width, _ "ColumnWidth (в символах) = " & Format(cw, "0.00"), _ "совпадение = " & Format(ActiveCell.Width / w, "0.00%") Next w End Sub Результат работы этого макроса:
Не получается применить макрос? Не удаётся изменить код под свои нужды? Оформите заказ у нас на сайте, не забыв прикрепить примеры файлов, и описать, что и как должно работать. |
python 3.x — Как задать ширину столбцов в pandas?
Тут статью посмотрите, должно помочь. Вот текст оттуда:
Как автоматически настроить ширину столбцов Excel с помощью Pandas ExcelWriter Динамическая настройка ширины имен столбцов Excel при использовании pandas.ExcelWriter и Python
Одна из самых неприятных вещей, с которой вам, возможно, придется иметь дело, — это создание файла Excel с использованием Python, который содержит множество столбцов, которые вы не можете прочитать из-за небольшой ширины столбцов. В идеале вы должны предоставлять читаемые электронные таблицы, в которых все столбцы правильно отформатированы, чтобы их можно было читать.
В этой статье мы собираемся изучить быстрые и простые способы использования
Динамическая настройка ширины всех столбцов в зависимости от длины имени столбца
Настройка определенного столбца по его имени
Настройка определенного столбца с помощью его индекса
Наконец, мы также обсудим, как исправить одну распространенную проблему, которая может возникнуть при вызове set_column
метода ( AttributeError: 'Worksheet' object has no attribute 'set_column'
). Если так, давайте создадим панд DataFrame , которые будут ссылаться в наших примерах, чтобы продемонстрировать действия , которые мы намерены обсудить в этой статье.
import pandas as pd import numpy as np df = pd.DataFrame( np.random.randint(0,100,size=(10, 4)), columns=column_names ) print(df) # column_a column_b this_is_a_long_column_name this_is_another_long_column_name # 0 91 2 8 39 # 1 81 56 9 62 # 2 94 82 36 34 # 3 54 28 92 29 # 4 20 21 72 16 # 5 63 71 8 63 # 6 64 69 23 56 # 7 29 27 97 88 # 8 9 83 38 36 # 9 83 64 72 60
Теперь давайте попробуем записать pandas DataFrame, который мы только что создали, в csv-файл, используя ExcelWriter
, как показано ниже (обратите внимание, что если приведенный ниже фрагмент не работает, ModuleNotFoundError: No module named openpyxl.
pip install openpyxl`): Все, что вам нужно сделать, это установить библиотеку, запустив
writer = pd.ExcelWriter('test_file.xlsx') df.to_excel(writer, sheet_name='my_analysis', index=False, na_rep='NaN') writer.save()
Написание pandas DataFrame
в электронную таблицу Excel
Выходная электронная таблица должна выглядеть примерно так, как показано ниже. Как видите, столбцы с более длинными именами обрезаются, а таблица в целом выглядит ужасно. Проблема была бы еще больше, если бы вам пришлось иметь дело с большим количеством таких столбцов.
Вывести pandas DataFrame
в электронную таблицу Excel
В следующих разделах мы рассмотрим несколько возможных способов автоматической регулировки ширины столбцов, чтобы итоговая таблица в электронной таблице была более читаемой.
Динамически настраивайте ширину всех столбцов
Чтобы автоматически регулировать ширину столбцов в зависимости от их длины, нам просто нужно выполнить итерацию по столбцам и соответственно установить ширину столбца, как показано ниже:
writer = pd.ExcelWriter('test_file.xlsx') df.to_excel(writer, sheet_name='my_analysis', index=False, na_rep='NaN') # Auto-adjust columns' width for column in df: column_width = max(df[column].astype(str).map(len).max(), len(column)) col_idx = df.columns.get_loc(column) writer.sheets['my_analysis'].set_column(col_idx, col_idx, column_width) writer.save()
Примечание. Если приведенный ниже фрагмент не соответствует следующему AttributeError, перейдите в конец статьи, чтобы узнать, как можно быстро решить эту проблему.
AttributeError: 'Worksheet' object has no attribute 'set_column'
Теперь выходной фрейм данных pandas в электронной таблице Excel стал более читаемым и определенно выглядит лучше. Все столбцы настроены на соответствующую ширину, чтобы они вписывались в пространство без обрезки.
Вывести pandas DataFrame в электронную таблицу Excel с автоматически настраиваемой шириной столбцов
Отрегулируйте ширину столбца, используя его имя
Теперь есть шанс, что вы захотите вручную настроить ширину только для определенного столбца (или подмножества столбцов). Вы можете сделать это, указав имя столбца, как показано во фрагменте ниже. Для этого примера предположим, что мы хотим настроить ширину столбца
this_is_a_long_column_name
на 30:
writer = pd.ExcelWriter('test_file.xlsx') df.to_excel(writer, sheet_name='my_analysis', index=False, na_rep='NaN') # Manually adjust the width of the last column writer.sheets['my_analysis'].set_column(3, 3, 45) writer.save()
Ручная настройка ширины определенного столбца путем ссылки на его имя
Результат приведенного выше фрагмента показан ниже. Как мы видим, ширина столбца this_is_a_long_column_name
была скорректирована 20, а ширина оставшихся столбцов была скорректирована до значения по умолчанию, что позволяет обрезать столбцы с большей шириной (например, последний).
Выходная таблица с вручную настроенной шириной столбца для this_is_a_long_column_name
Отрегулируйте ширину столбца с помощью его индекса
В качестве альтернативы вы можете вручную настроить ширину определенного столбца, напрямую ссылаясь на его индекс. В примере, показанном ниже, мы демонстрируем это, регулируя ширину последнего столбца.
Ручная настройка ширины определенного столбца путем ссылки на его индекс
Опять же, мы видим, что в этом случае последний столбец был настроен width=40
так, чтобы он был достаточно широким, чтобы соответствовать имени столбца.
Выходная таблица с вручную настроенной шириной последнего столбца
Как исправить AttributeError: 'Worksheet' object has no attribute 'set_column'
В случае сбоя любой из вышеуказанных операций с ошибкой, показанной ниже
AttributeError: 'Worksheet' object has no attribute 'set_column'
все, что вам нужно сделать, это установить xlswriter
:
pip install xlsxwriter
В этой статье мы исследуем несколько возможных способов автоматической регулировки ширины столбцов при записи pandas DataFrame в электронные таблицы Excel. Обычно мы создаем электронные таблицы, чтобы генерировать элементы информации, которые выглядят красиво и легко читаются. Поэтому важно создавать электронные таблицы, которые не потребуют от читателя каких-либо ручных усилий, чтобы сделать их удобочитаемыми. Вы можете добиться этого с помощью минимального кода, который я поделился ранее, который определенно поможет вам создавать высококачественные файлы Excel при попытке создать их из pandas DataFrames.
Как изменить ширину столбца в Excel
Главная / Основы Excel / Как изменить ширину столбца в Excel
Отрегулировать ширину столбца с помощью мыши
Установить ширину столбца на определенное число
Настройка ширины столбца с помощью параметра автоподбора
Установка ширины столбца по умолчанию
Указатель для запоминания
В Excel на листе есть несколько ячеек одинакового размера, и каждая ячейка содержит 8,43 символа.
В частности, при подготовке отчетов, создании таблиц данных или выполнении других расчетов вам часто нужно изменить ширину столбца. И, увеличив ширину столбцов, вы можете легко получить видимость всех данных на вашем листе.
В этом уроке мы изучим несколько эффективных способов регулировки ширины столбцов.
Настройка ширины столбца с помощью мыши
Настройка ширины столбца с помощью щелчка и перетаскивания очень проста и понятна. Теперь давайте сделаем это шаг за шагом.
- Чтобы изменить ширину «Один или несколько столбцов», сначала выберите этот конкретный столбец в электронной таблице.
- После этого подведите указатель мыши к границе выделенного столбца в заголовке столбца.
- Когда она станет похожей на четырехстороннюю стрелку, нажмите и удерживайте левую кнопку мыши и перетащите ее вправо, чтобы увеличить ширину.
- Чтобы изменить ширину «Все столбцы», сначала нажмите Ctrl + A, чтобы выбрать все столбцы на листе, а затем перетащите заголовок любого столбца, чтобы настроить его по своему усмотрению.
Вы также можете просмотреть текущую ширину столбца, нажав на границу столбца в заголовке столбца с его пикселями.
Установка ширины столбца на определенное число
- Опять же, вам нужно сначала выбрать столбец, чтобы изменить его ширину на определенное число.
- Затем на вкладке «Главная» перейдите в группу «Ячейки» и нажмите «Формат».
- Затем выберите «Ширина столбца» из раскрывающегося списка.
- После щелчка открывается диалоговое окно ширины столбца. Теперь введите точное значение ширины, которое вы хотите, в поле и нажмите «ОК», чтобы применить.
Установить ширину столбца, щелкнув правой кнопкой мыши
Вы также можете открыть то же диалоговое окно «Ширина столбца», щелкнув правой кнопкой мыши выбранную строку.
В поле ширины столбца введите желаемое значение и нажмите «ОК».
Настройка ширины столбца с помощью параметра автоподбора
Если ваши данные в столбцах не видны, вы можете использовать параметр автоподбора для коллективной настройки ширины столбцов. Вот шаги, которые нужно сделать:
- Для этого необходимо сначала выбрать один, несколько или все столбцы для установки ширины.
- Затем перейдите к «Формат» в группе ячеек на вкладке «Главная». Выберите опцию « Autofit Column Width » из списка опций.
- Затем он автоматически подбирает ширину всех выбранных столбцов, чтобы вы могли легко видеть все данные, как показано на следующем рисунке.
Настройка ширины столбцов по умолчанию
При ширине столбца по умолчанию вы можете изменить ширину столбцов всего рабочего листа, а также установить ширину сразу для всех рабочих листов в рабочей книге.
- Выберите одну или несколько электронных таблиц, для которых вы хотите настроить ширину по умолчанию. Здесь мы выбираем один рабочий лист в качестве примера.
- Теперь перейдите в «Формат» и нажмите «Ширина по умолчанию».
- Затем откроется диалоговое окно «Стандартная ширина». Там вы можете увидеть текущую ширину пустых столбцов, она равна 20,9.0030
- Наконец, вам нужно ввести «Стандартную ширину столбца» в поле и нажать «ОК», чтобы применить.
Указание на запоминание
- Стандартная ширина по умолчанию применяется ко всем пустым ячейкам на листе, а не к тем ячейкам, в которых уже есть данные.
- Ширина столбца автоподбора не применяется, если ширина столбца достаточна для данных в столбце.
Как зафиксировать высоту строки и ширину столбца в Excel (простой трюк)
Изменить высоту и ширину ячейки в Excel довольно просто.
Чем больше вы работаете с Excel, тем чаще вам приходится регулировать высоту строки и ширину столбца.
Но в некоторых случаях может потребоваться заблокировать высоту и ширину ячейки, чтобы пользователь не мог вносить в них какие-либо изменения.
Один из сценариев, когда это может понадобиться, может быть, когда у вас есть фиксированный шаблон, которым вы делитесь с другими людьми, и вы не хотите, чтобы они испортили форматирование, изменив высоту/ширину ячейки.
В этом уроке я покажу вам , как заблокировать высоту строки и ширину столбца в Excel , сделав простое изменение.
В этом руководстве рассматриваются:
Когда вы защищаете рабочий лист в Excel, также блокирует высоту строки и ширину столбца, чтобы никто не мог их изменить.
Но с защитой листа все ячейки также заблокированы и в него нельзя внести какие-либо изменения (т.е. нельзя попасть в режим редактирования или ввести формулы).
Хотя мы хотим заблокировать ширину столбца и высоту строки, мы не хотим полностью блокировать ячейки.
И, к счастью, это можно сделать в Excel.
Чтобы это работало, вам нужно сделать две вещи:
- Отключить свойство «Заблокировано» для всех ячеек
- Защитить рабочий лист, чтобы высота строки и ширина столбца для каждой ячейки были заблокированы
Отключение блокировки Свойство для всех ячеек
Ниже приведены шаги, чтобы отключить свойство блокировки для всех ячеек, после чего мы можем заблокировать высоту строки и ширину столбца:
- Выберите все ячейки на листе, нажав на серый треугольник в верхнюю левую часть рабочего листа.
- Перейдите на вкладку «Главная»
- В группе «Число» щелкните значок запуска диалогового окна (значок маленькой наклонной стрелки в правом нижнем углу группы)
- В открывшемся диалоговом окне «Формат ячеек» нажмите вкладка «Защита»
- Снимите флажок «Заблокировано»
- Нажмите «ОК»
Таким образом, мы добились того, что даже если мы защитим весь рабочий лист, ячейки все равно останутся редактируемыми.
При защите листа в Excel ячейки будут полностью заблокированы (т. е. пользователь не сможет редактировать ячейки и что-либо в них вводить). Но это происходит только при включенном свойстве Locked. Если вы отключите свойство Locked, ячейки останутся редактируемыми даже после защиты листа.
Теперь давайте перейдем ко второму шагу, который заключается в защите всего листа.
Защита всего рабочего листа
Теперь давайте посмотрим, как быстро защитить весь рабочий лист.
- Перейдите на вкладку «Просмотр»
- В группе «Защита» выберите параметр «Защитить лист».
- В открывшемся диалоговом окне «Защитить лист» введите пароль (необязательно) Диалоговое окно «Защитить лист» (кроме параметров «Формат столбцов» и «Формат строк»).
- Нажмите OK
Вышеуказанные шаги защитят рабочий лист, но в то же время позволят пользователю выполнять все обычные действия, такие как форматирование ячеек или удаление/добавление строк и столбцов.
Поскольку мы отключили параметр форматирования столбцов и форматирования строк (в диалоговом окне «Защитить лист»), они по-прежнему останутся заблокированными для пользователя.
Это означает, что пользователь не сможет изменить высоту строки или ширину столбца на этом листе.
Если вы перейдете к любому заголовку строки или столбца и поместите курсор на край заголовка, вы увидите, что ваш значок не изменится (который ранее использовался для изменения в двойную стрелку и позволял вам изменить высоту строки или столбца, щелкнув и перетащив курсор)
Точно так же, если вы выберете любую ячейку на листе, щелкните вкладку «Главная», а затем щелкните параметр «Формат», вы увидите, что параметры «Высота строки» и «Ширина столбца» теперь недоступны.