Толковый видос, неделю назад как раз искал хорошую библиотеку для excel. Пришлось на время записывать в csv. Но в excel конечно красивее, ещё и заливка есть, круто!
Привет! Классное видео! Мне не хватило примера простого шаблонизатора для данных - чтобы словари переводить в ексель и обратно. Т.е. непосредственно работа с данными
Досмотрел. Теперь понял про стили. Вопрос: используется цифра 999. В экселе столько строк с данными, или просто большое число, чтобы все строки пробежать?
Отличное видео, спасибо! А может известно как сделать через openpyxl выпадающий список в ячейках/столбцах Excel? и общий доступ к файлу Excel сделать, что бы в нем одновременно несколько человек сидели и работали?
У ячейки есть такой метод column_letter. А как получить названия колонок у объединённой ячейки? Я додумался только до двух вариантов 0) получить wb.cell(row, col).coordinate и тут убрать цифры справа 1)получить wb.merged_cells.ranges и уже оттуда, например , уже как-то получить названия колонок
@@AzzraelCode посмотрел. Нашёл более подходящее решение через openpyxl.utils.cell.coordinate_from_string(coord_string). Не знал, что есть ещё openpyxl.utils. Спасибо большое.
Спасибо за такое видео, отличный слог, приятно слушать и лего воспринимается Подскажите пожалуйста, как можно открывать файлы, указанные пользователем? Переименовывать каждый раз файл в, например, test.xlsx неудобно совсем, может есть какие-то варианты, через графику например? Открываю через book = openpyxl.load_workbook('test.xlsx') Спасибо еще раз!
@@AzzraelCode жаль тут скрин нельзя приложить :) Я собрал скрипт, который в первую очередь проверяет данные в уже имеющейся таблице. Но файлы всегда называются по разному, переименовывать их в "test.xlsx" и класть в папку со скриптом - проблема, возникнет путаница. То есть мне нужно как-то указывать скрипту, с каким именно файлом .xlsx ему нужно работать
А можете порекомендовать пакет для работы с ods? Понятно что можно файл пересохранить в xlsx и работать через openpyxl, но хотелось бы работать с форматами опеноффиса напрямую....
С OpenOffice не работал от слова совсем. Поэтому ничем не смогу помочь, к сож. По большому счету и экселем то уже не пользуюсь почти. Все что требует таблиц давно перевел в Google Sheets.
@Azzrael_Code, вопрос, у меня написан код (модификация таблиц с помощью ... 12:03) один в один как у тебя (уверен на 100%) но у меня не происходят изменения в файле ексель. но ошибок прога не видит ? что делать ? может у меня что то не правильно настроено ?
Отлично. Сколько не смотрел по openpyxl - все очень поверхостно в отличии от этого видео. В процессе просмотра возник вопрос - почему вы удаляете по молчанию созданную вкладку, а не переименовываете ее ? И второй вопрос, когда мы задаем щирину колонки с помошью column_dimensions то обращаемся к колонке по ее буквенному индексу, а как поступить, если хочется обратиться к колонке по ее цифровому номеру, ведь к ячейке можно обращаться и так cell(row=3, column=1)
> почему вы удаляете по молчанию созданную вкладку, а не переименовываете ее я и так и так делаю по настроению. > обратиться к колонке по ее цифровому номеру в openpyxl.utils есть метод get_column_letter(i), где i - индекс колонки начиная с 1
ДД. у меня вопрос: если например стоит задача обработать/проанализировать некий массив данных excel. пытаюсь сделать это через макрос VBA, но скорость как-то не устраивает. Вопрос: если тот же алгоритм реализовать через Питон, то будет ли ускорение работы по сравнению с VBA?
Может кто знает: Помешаю данные списком в sheet.cell (где sheet это sheet = book[текущий файл или создаю если его нет]) и сохраняю. Но есть один столбец в ячейки которого помешается текст количеством символов в районе 1000, и кб 2 где считал. Так вот когда excel открываю, у меня в этой ячейке может весь текст быть, а в ячейке ниже не полностью, обрезанный, при каждом запуске цикла, объем меняется текста. При этом после записи, если задам строго принт на ячейку (value) получаю весь текст, а в excel не весь. Подскажите в чем может быть проблема. Так же может как то изменять размер заметил строка: cell.alignment = Alignment(wrapText=True, vertical="top") Еще изменяю по ширине и высоте текста размер ячейки, если их убрать текст так же может не полностью отобразится, а может полностью всегда рандомно. Получается, что при записи что то не так записывается (именно с этим столбцом) и я хз что, вторые сутки ищу. В поисковиках инфы найти не могу.
Замудрил капец, одна программа -вторая- там вызови- тут нажми- сущностей насоздавал, повторить мне с нуля было проблемно, в 90% случаев эксель файл приходит со стороны
А зачем это зрителю? Продолжительность видео увеличится втрое и большую его часть вы будете наблюдать как на экране появляются символы, а качество кода будет хуже ( не буду же я на видео, например, писать комменты к методам ). Я сужу по себе - смотреть такие видео - боль. Вроде и промотать хочется, а вдруг что важное пропущу. Поэтому такой контент я чаще смотрю на скорости 1.5. ~~ Смысл в таком видео есть для автора. В длинные видео помещается больше рекламы, а потому ютюб любит такие видео ;) и часто длинные видео лучше ранжируются. Поэтому вполне возможно я последую вашему совету ;), но я убежден что для разработчика чуть выше абсолютного новичка готовый, хорошо задокументированный код лучше.
Вы по определению вы не можете задать высоту строк в отдельном столбце. Это же таблица. В этом как раз суть таблицы - в структурности данных. В таблице можно менять ширину отдельного столбца и высоту отдельной строки, но не наоборот. Также вы можете объединять ячейки (rowspan, colspan). Ну а чтобы задать высоту строки в таблицы с помощью Python OpenPyXl, первая ссылка в гугле stackoverflow.com/questions/70827844/python-excel-modify-specific-row-height-with-openpyxl
я написал цикл который мне был необходим: for row_num in range (1, ws.max_row + 1): ws.row_dimensions[row_num].height = 25 (пример) Спасибо за видео было очень полезно, особенно со стилизацией .
А можно ли создать сводную таблицу в Экселе на основании данных из Pythom, не создавая sheet в Экселе? Я имею ввиду создать сводную таблицу примерно так это создаётся из Power pivot например.
Мне не знаком Power Pivot, поэтому не уверен что я правильно понимаю ваш вопрос. Python может получить данные, обработать их и положить их в эксель в т. ч.
К сожалению ищу и не нахожу как можно разделить информацию в ячейке. Допустим есть размер мебельной секции 700х450х2400. Я хочу выделить каждый размер из общей строки и записать его в следующие 3 пустые колонки, чтобы эти числа дальше умножать на цену за материал. И так каждый ряд (900 всего).
Документация к OpenPyXl openpyxl.readthedocs.io/en/stable/index.html
Спасибо Автору azzrael.ru/spasibo
Толковый видос, неделю назад как раз искал хорошую библиотеку для excel. Пришлось на время записывать в csv. Но в excel конечно красивее, ещё и заливка есть, круто!
Привет! Классное видео! Мне не хватило примера простого шаблонизатора для данных - чтобы словари переводить в ексель и обратно.
Т.е. непосредственно работа с данными
Спасибо, очень полезно!
Классное видео, за что столько дизов?
Лучшее видео из тех, что я нашёл на данную тему. Спасибо!
Тоже это использую. Видео ещё не смотрел, но 👍 и 🔔
Досмотрел. Теперь понял про стили.
Вопрос: используется цифра 999. В экселе столько строк с данными, или просто большое число, чтобы все строки пробежать?
В моем коде цифра от фонаря для упрощения. А по правильному у класса Worksheet есть свойство max_row (а также min_col, min_row, max_col, max_row ).
@@AzzraelCode понял. Спасибо.
Очень интересно. Пожалуйста, рассмотрите графики, как их строить
Спасибо за контент!
Огонь!!!
супер, контент в кайф, давай еще!
Лайк однозначно)
Отличное видео, спасибо! А может известно как сделать через openpyxl выпадающий список в ячейках/столбцах Excel? и общий доступ к файлу Excel сделать, что бы в нем одновременно несколько человек сидели и работали?
... в общем я разобрался как это сделать))
У ячейки есть такой метод column_letter. А как получить названия колонок у объединённой ячейки?
Я додумался только до двух вариантов
0) получить wb.cell(row, col).coordinate и тут убрать цифры справа
1)получить wb.merged_cells.ranges и уже оттуда, например , уже как-то получить названия колонок
Как такой вариант?
get_column_letter(sheet.merged_cells.ranges[0].min_col)
@@AzzraelCode спасибо, гляну. Может поможет.
@@AzzraelCode посмотрел. Нашёл более подходящее решение через openpyxl.utils.cell.coordinate_from_string(coord_string). Не знал, что есть ещё openpyxl.utils. Спасибо большое.
Спасибо за такое видео, отличный слог, приятно слушать и лего воспринимается
Подскажите пожалуйста, как можно открывать файлы, указанные пользователем?
Переименовывать каждый раз файл в, например, test.xlsx неудобно совсем, может есть какие-то варианты, через графику например?
Открываю через book = openpyxl.load_workbook('test.xlsx')
Спасибо еще раз!
Спасибо за оценку. Не очень понял что значит файлы указанные пользователем?
@@AzzraelCode жаль тут скрин нельзя приложить :)
Я собрал скрипт, который в первую очередь проверяет данные в уже имеющейся таблице. Но файлы всегда называются по разному, переименовывать их в "test.xlsx" и класть в папку со скриптом - проблема, возникнет путаница.
То есть мне нужно как-то указывать скрипту, с каким именно файлом .xlsx ему нужно работать
Понял. Погуглите про модули python argparse или click (я предпочитаю второй).
@@AzzraelCode погуглил, спасибо за направление, круто!
А как добавить данные в столбец по его номеру?
Например, хочу добавить число в 15-й столбец 3-я строка, а какая у столбца буква не знаю.
И спасибо за очередное качественное и полезное видео.
Отвечу сам себе: нужно использовать get_column_letter( 15 ) -> вернёт букву столбца 15.
А можете порекомендовать пакет для работы с ods? Понятно что можно файл пересохранить в xlsx и работать через openpyxl, но хотелось бы работать с форматами опеноффиса напрямую....
С OpenOffice не работал от слова совсем. Поэтому ничем не смогу помочь, к сож. По большому счету и экселем то уже не пользуюсь почти. Все что требует таблиц давно перевел в Google Sheets.
Напрягают постоянные дергающие метания курсором по экрану...
@Azzrael_Code, вопрос, у меня написан код (модификация таблиц с помощью ... 12:03) один в один как у тебя (уверен на 100%) но у меня не происходят изменения в файле ексель. но ошибок прога не видит ? что делать ? может у меня что то не правильно настроено ?
Можно ли применить ширину колонки сразу для нескольких столбцов?
Отлично. Сколько не смотрел по openpyxl - все очень поверхостно в отличии от этого видео. В процессе просмотра возник вопрос - почему вы удаляете по молчанию созданную вкладку, а не переименовываете ее ? И второй вопрос, когда мы задаем щирину колонки с помошью column_dimensions то обращаемся к колонке по ее буквенному индексу, а как поступить, если хочется обратиться к колонке по ее цифровому номеру, ведь к ячейке можно обращаться и так cell(row=3, column=1)
> почему вы удаляете по молчанию созданную вкладку, а не переименовываете ее
я и так и так делаю по настроению.
> обратиться к колонке по ее цифровому номеру
в openpyxl.utils есть метод get_column_letter(i), где i - индекс колонки начиная с 1
@@AzzraelCode за get_column_letter(i) спасибо, хотя я надеялся что можно проще :-)
ДД. у меня вопрос: если например стоит задача обработать/проанализировать некий массив данных excel. пытаюсь сделать это через макрос VBA, но скорость как-то не устраивает. Вопрос: если тот же алгоритм реализовать через Питон, то будет ли ускорение работы по сравнению с VBA?
Я не сравнивал, но stackoverflow.com/questions/35383325/efficiency-openpyxl-or-vba
Может кто знает:
Помешаю данные списком в sheet.cell (где sheet это sheet = book[текущий файл или создаю если его нет]) и сохраняю.
Но есть один столбец в ячейки которого помешается текст количеством символов в районе 1000, и кб 2 где считал.
Так вот когда excel открываю, у меня в этой ячейке может весь текст быть, а в ячейке ниже не полностью, обрезанный, при каждом запуске цикла, объем меняется текста.
При этом после записи, если задам строго принт на ячейку (value) получаю весь текст, а в excel не весь.
Подскажите в чем может быть проблема.
Так же может как то изменять размер заметил строка:
cell.alignment = Alignment(wrapText=True, vertical="top")
Еще изменяю по ширине и высоте текста размер ячейки, если их убрать текст так же может не полностью отобразится, а может полностью всегда рандомно. Получается, что при записи что то не так записывается (именно с этим столбцом) и я хз что, вторые сутки ищу. В поисковиках инфы найти не могу.
Как разделить фио по ячейкам?
Не до конца понял, а как сделать сортировку по алфавиту в столбце. Если не сложно , можете хотя бы пример кинуть
У OpenPyXl нет функционала сортировки.
Спасибо за видео
Не понимаю как поступить в первом примере когда нужно сохранить dataframe в xlsx. куча вариаций append не спасает
По панде и экселю у меня есть отдельный ролик th-cam.com/video/Q6LtTnrB8es/w-d-xo.html
жаль что питон не может строку превратить в переменную типа "gold =100" в gold=100
Замудрил капец, одна программа -вторая- там вызови- тут нажми- сущностей насоздавал, повторить мне с нуля было проблемно, в 90% случаев эксель файл приходит со стороны
Добрый день. Подскажите, а как перенос строки сделать? к примеру есть список ['1','2'] заполняется сейчас А1 B1 , а нужно А1 А2
Вам нужен двумерный массив
[[1], [2]]
Тогда 1 будет в A1, 2 в A2
@@AzzraelCode к сожалению я плох в этом и не понимаю Вас(
Умеете с json работать ?
Совет, не начинайте объяснять с уже заполненным кодом, начинайте писать все с нуля.
А зачем это зрителю? Продолжительность видео увеличится втрое и большую его часть вы будете наблюдать как на экране появляются символы, а качество кода будет хуже ( не буду же я на видео, например, писать комменты к методам ). Я сужу по себе - смотреть такие видео - боль. Вроде и промотать хочется, а вдруг что важное пропущу. Поэтому такой контент я чаще смотрю на скорости 1.5.
~~
Смысл в таком видео есть для автора. В длинные видео помещается больше рекламы, а потому ютюб любит такие видео ;) и часто длинные видео лучше ранжируются. Поэтому вполне возможно я последую вашему совету ;), но я убежден что для разработчика чуть выше абсолютного новичка готовый, хорошо задокументированный код лучше.
вопрос:
как можно задать высоту строк для определённых столбцов или для всей таблицы?
спасибо за ответ (любой)
Вы по определению вы не можете задать высоту строк в отдельном столбце. Это же таблица. В этом как раз суть таблицы - в структурности данных. В таблице можно менять ширину отдельного столбца и высоту отдельной строки, но не наоборот. Также вы можете объединять ячейки (rowspan, colspan).
Ну а чтобы задать высоту строки в таблицы с помощью Python OpenPyXl, первая ссылка в гугле stackoverflow.com/questions/70827844/python-excel-modify-specific-row-height-with-openpyxl
@@AzzraelCode спасибо!
я написал цикл который мне был необходим:
for row_num in range (1, ws.max_row + 1):
ws.row_dimensions[row_num].height = 25
(пример)
Спасибо за видео было очень полезно, особенно со стилизацией .
А как сдвиг сделать? Мне нужно столбец F полностью передвинуть влево - 3
По разному можно. С помощью Pandas например так
df.insert(2, 4, df.pop(4))
Как заполнить ячейку от A1 до A200 информацией из массива или переменной?
Итерируя массив и используя методы append. В видео первый пример как раз об этом.
А можно ли создать сводную таблицу в Экселе на основании данных из Pythom, не создавая sheet в Экселе? Я имею ввиду создать сводную таблицу примерно так это создаётся из Power pivot например.
Мне не знаком Power Pivot, поэтому не уверен что я правильно понимаю ваш вопрос. Python может получить данные, обработать их и положить их в эксель в т. ч.
К сожалению ищу и не нахожу как можно разделить информацию в ячейке. Допустим есть размер мебельной секции 700х450х2400. Я хочу выделить каждый размер из общей строки и записать его в следующие 3 пустые колонки, чтобы эти числа дальше умножать на цену за материал. И так каждый ряд (900 всего).
тоже самое, не нашел решение?
@@vladimir7759 =ЛЕВСИМВ(E6;ПОИСК("х";E6)-1) - первые две колонки. =ПРАВСИМВ(G6;ДЛСТР(G6)-ПОИСК("х";G6)) последняя колонка.
@@ApelsinArbuzov1 я хочу через openpyxl сделать
@@vladimir7759 Пока не понял как. Только в экселе
@@ApelsinArbuzov1 да я тоже не понял, а в екселе кнопка есть которая по столбцам разделяет
а как считать данные, если таблица на гугл диске?
Силами OpenPyXl никак.
@@AzzraelCode а вообще любые способы
где второй лайк постаить ?
как можно запутанно так излагать и главное пример на запись не работает
Можно. Хорошо что ютюб большой ;)
Очень мелко