Тёмный

Python + OpenPyXl = Excel 

Azzrael Code
Подписаться 12 тыс.
Просмотров 37 тыс.
50% 1

Опубликовано:

 

2 окт 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 76   
@AzzraelCode
@AzzraelCode 3 года назад
Документация к OpenPyXl openpyxl.readthedocs.io/en/stable/index.html Спасибо Автору azzrael.ru/spasibo
@mickey5995
@mickey5995 3 года назад
Совет, не начинайте объяснять с уже заполненным кодом, начинайте писать все с нуля.
@AzzraelCode
@AzzraelCode 3 года назад
А зачем это зрителю? Продолжительность видео увеличится втрое и большую его часть вы будете наблюдать как на экране появляются символы, а качество кода будет хуже ( не буду же я на видео, например, писать комменты к методам ). Я сужу по себе - смотреть такие видео - боль. Вроде и промотать хочется, а вдруг что важное пропущу. Поэтому такой контент я чаще смотрю на скорости 1.5. ~~ Смысл в таком видео есть для автора. В длинные видео помещается больше рекламы, а потому ютюб любит такие видео ;) и часто длинные видео лучше ранжируются. Поэтому вполне возможно я последую вашему совету ;), но я убежден что для разработчика чуть выше абсолютного новичка готовый, хорошо задокументированный код лучше.
@noookm
@noookm 3 года назад
Тоже это использую. Видео ещё не смотрел, но 👍 и 🔔
@noookm
@noookm 3 года назад
Досмотрел. Теперь понял про стили. Вопрос: используется цифра 999. В экселе столько строк с данными, или просто большое число, чтобы все строки пробежать?
@AzzraelCode
@AzzraelCode 3 года назад
В моем коде цифра от фонаря для упрощения. А по правильному у класса Worksheet есть свойство max_row (а также min_col, min_row, max_col, max_row ).
@noookm
@noookm 3 года назад
@@AzzraelCode понял. Спасибо.
@ФдрФфф
@ФдрФфф Год назад
А как добавить данные в столбец по его номеру? Например, хочу добавить число в 15-й столбец 3-я строка, а какая у столбца буква не знаю.
@ФдрФфф
@ФдрФфф Год назад
И спасибо за очередное качественное и полезное видео.
@ФдрФфф
@ФдрФфф Год назад
Отвечу сам себе: нужно использовать get_column_letter( 15 ) -> вернёт букву столбца 15.
@MrRealwin
@MrRealwin 2 года назад
Спасибо за контент!
@gooryewood
@gooryewood 11 месяцев назад
Классное видео, за что столько дизов?
@vladimir-monin
@vladimir-monin Год назад
Привет! Классное видео! Мне не хватило примера простого шаблонизатора для данных - чтобы словари переводить в ексель и обратно. Т.е. непосредственно работа с данными
@AZmievsky
@AZmievsky Год назад
Напрягают постоянные дергающие метания курсором по экрану...
@SmagroShop
@SmagroShop 9 месяцев назад
Замудрил капец, одна программа -вторая- там вызови- тут нажми- сущностей насоздавал, повторить мне с нуля было проблемно, в 90% случаев эксель файл приходит со стороны
@vasbkamarxil1260
@vasbkamarxil1260 Год назад
Огонь!!!
@damirzaripov3880
@damirzaripov3880 2 года назад
Спасибо, очень полезно!
@linux457
@linux457 2 года назад
где второй лайк постаить ?
@sergeys.4379
@sergeys.4379 3 года назад
А можете порекомендовать пакет для работы с ods? Понятно что можно файл пересохранить в xlsx и работать через openpyxl, но хотелось бы работать с форматами опеноффиса напрямую....
@AzzraelCode
@AzzraelCode 3 года назад
С OpenOffice не работал от слова совсем. Поэтому ничем не смогу помочь, к сож. По большому счету и экселем то уже не пользуюсь почти. Все что требует таблиц давно перевел в Google Sheets.
@noookm
@noookm 3 года назад
У ячейки есть такой метод column_letter. А как получить названия колонок у объединённой ячейки? Я додумался только до двух вариантов 0) получить wb.cell(row, col).coordinate и тут убрать цифры справа 1)получить wb.merged_cells.ranges и уже оттуда, например , уже как-то получить названия колонок
@AzzraelCode
@AzzraelCode 3 года назад
Как такой вариант? get_column_letter(sheet.merged_cells.ranges[0].min_col)
@noookm
@noookm 3 года назад
@@AzzraelCode спасибо, гляну. Может поможет.
@noookm
@noookm 3 года назад
@@AzzraelCode посмотрел. Нашёл более подходящее решение через openpyxl.utils.cell.coordinate_from_string(coord_string). Не знал, что есть ещё openpyxl.utils. Спасибо большое.
@waltage
@waltage Год назад
жаль что питон не может строку превратить в переменную типа "gold =100" в gold=100
@endresk9403
@endresk9403 2 года назад
Может кто знает: Помешаю данные списком в sheet.cell (где sheet это sheet = book[текущий файл или создаю если его нет]) и сохраняю. Но есть один столбец в ячейки которого помешается текст количеством символов в районе 1000, и кб 2 где считал. Так вот когда excel открываю, у меня в этой ячейке может весь текст быть, а в ячейке ниже не полностью, обрезанный, при каждом запуске цикла, объем меняется текста. При этом после записи, если задам строго принт на ячейку (value) получаю весь текст, а в excel не весь. Подскажите в чем может быть проблема. Так же может как то изменять размер заметил строка: cell.alignment = Alignment(wrapText=True, vertical="top") Еще изменяю по ширине и высоте текста размер ячейки, если их убрать текст так же может не полностью отобразится, а может полностью всегда рандомно. Получается, что при записи что то не так записывается (именно с этим столбцом) и я хз что, вторые сутки ищу. В поисковиках инфы найти не могу.
@bahubali_onegreat4324
@bahubali_onegreat4324 Год назад
@Azzrael_Code, вопрос, у меня написан код (модификация таблиц с помощью ... 12:03) один в один как у тебя (уверен на 100%) но у меня не происходят изменения в файле ексель. но ошибок прога не видит ? что делать ? может у меня что то не правильно настроено ?
@pavelpeklov3825
@pavelpeklov3825 7 месяцев назад
Очень интересно. Пожалуйста, рассмотрите графики, как их строить
@viktoragusev
@viktoragusev Год назад
Можно ли применить ширину колонки сразу для нескольких столбцов?
@monetary_supply
@monetary_supply Год назад
Толковый видос, неделю назад как раз искал хорошую библиотеку для excel. Пришлось на время записывать в csv. Но в excel конечно красивее, ещё и заливка есть, круто!
@Abramov_Andrey
@Abramov_Andrey Год назад
Отличное видео, спасибо! А может известно как сделать через openpyxl выпадающий список в ячейках/столбцах Excel? и общий доступ к файлу Excel сделать, что бы в нем одновременно несколько человек сидели и работали?
@Abramov_Andrey
@Abramov_Andrey Год назад
... в общем я разобрался как это сделать))
@vladimir7759
@vladimir7759 2 года назад
Как разделить фио по ячейкам?
@kairatalmenov9558
@kairatalmenov9558 Год назад
ДД. у меня вопрос: если например стоит задача обработать/проанализировать некий массив данных excel. пытаюсь сделать это через макрос VBA, но скорость как-то не устраивает. Вопрос: если тот же алгоритм реализовать через Питон, то будет ли ускорение работы по сравнению с VBA?
@AzzraelCode
@AzzraelCode Год назад
Я не сравнивал, но stackoverflow.com/questions/35383325/efficiency-openpyxl-or-vba
@Vol4ikk
@Vol4ikk 2 года назад
Спасибо за такое видео, отличный слог, приятно слушать и лего воспринимается Подскажите пожалуйста, как можно открывать файлы, указанные пользователем? Переименовывать каждый раз файл в, например, test.xlsx неудобно совсем, может есть какие-то варианты, через графику например? Открываю через book = openpyxl.load_workbook('test.xlsx') Спасибо еще раз!
@AzzraelCode
@AzzraelCode 2 года назад
Спасибо за оценку. Не очень понял что значит файлы указанные пользователем?
@Vol4ikk
@Vol4ikk 2 года назад
​@@AzzraelCode жаль тут скрин нельзя приложить :) Я собрал скрипт, который в первую очередь проверяет данные в уже имеющейся таблице. Но файлы всегда называются по разному, переименовывать их в "test.xlsx" и класть в папку со скриптом - проблема, возникнет путаница. То есть мне нужно как-то указывать скрипту, с каким именно файлом .xlsx ему нужно работать
@AzzraelCode
@AzzraelCode 2 года назад
Понял. Погуглите про модули python argparse или click (я предпочитаю второй).
@Vol4ikk
@Vol4ikk 2 года назад
@@AzzraelCode погуглил, спасибо за направление, круто!
@rustamgroza9692
@rustamgroza9692 2 года назад
Не до конца понял, а как сделать сортировку по алфавиту в столбце. Если не сложно , можете хотя бы пример кинуть
@AzzraelCode
@AzzraelCode 2 года назад
У OpenPyXl нет функционала сортировки.
@dailyvideo1593
@dailyvideo1593 2 года назад
супер, контент в кайф, давай еще! Лайк однозначно)
@andreykonkov3553
@andreykonkov3553 2 года назад
вопрос: как можно задать высоту строк для определённых столбцов или для всей таблицы? спасибо за ответ (любой)
@AzzraelCode
@AzzraelCode 2 года назад
Вы по определению вы не можете задать высоту строк в отдельном столбце. Это же таблица. В этом как раз суть таблицы - в структурности данных. В таблице можно менять ширину отдельного столбца и высоту отдельной строки, но не наоборот. Также вы можете объединять ячейки (rowspan, colspan). Ну а чтобы задать высоту строки в таблицы с помощью Python OpenPyXl, первая ссылка в гугле stackoverflow.com/questions/70827844/python-excel-modify-specific-row-height-with-openpyxl
@andreykonkov3553
@andreykonkov3553 2 года назад
@@AzzraelCode спасибо!
@andreykonkov3553
@andreykonkov3553 2 года назад
я написал цикл который мне был необходим: for row_num in range (1, ws.max_row + 1): ws.row_dimensions[row_num].height = 25 (пример) Спасибо за видео было очень полезно, особенно со стилизацией .
@glamb_is_learning
@glamb_is_learning Год назад
Лучшее видео из тех, что я нашёл на данную тему. Спасибо!
@eYVgeni
@eYVgeni 3 года назад
Отлично. Сколько не смотрел по openpyxl - все очень поверхостно в отличии от этого видео. В процессе просмотра возник вопрос - почему вы удаляете по молчанию созданную вкладку, а не переименовываете ее ? И второй вопрос, когда мы задаем щирину колонки с помошью column_dimensions то обращаемся к колонке по ее буквенному индексу, а как поступить, если хочется обратиться к колонке по ее цифровому номеру, ведь к ячейке можно обращаться и так cell(row=3, column=1)
@AzzraelCode
@AzzraelCode 3 года назад
> почему вы удаляете по молчанию созданную вкладку, а не переименовываете ее я и так и так делаю по настроению. > обратиться к колонке по ее цифровому номеру в openpyxl.utils есть метод get_column_letter(i), где i - индекс колонки начиная с 1
@eYVgeni
@eYVgeni 3 года назад
@@AzzraelCode за get_column_letter(i) спасибо, хотя я надеялся что можно проще :-)
@АнатолийСоломонов-ж2п
А как сдвиг сделать? Мне нужно столбец F полностью передвинуть влево - 3
@AzzraelCode
@AzzraelCode Год назад
По разному можно. С помощью Pandas например так df.insert(2, 4, df.pop(4))
@ДмитрийГордеев-б9б
Спасибо за видео Не понимаю как поступить в первом примере когда нужно сохранить dataframe в xlsx. куча вариаций append не спасает
@AzzraelCode
@AzzraelCode 2 года назад
По панде и экселю у меня есть отдельный ролик ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-Q6LtTnrB8es.html
@ИгорьШколаберда-ц4р
как можно запутанно так излагать и главное пример на запись не работает
@AzzraelCode
@AzzraelCode 2 года назад
Можно. Хорошо что ютюб большой ;)
@kuro4144
@kuro4144 3 года назад
Как заполнить ячейку от A1 до A200 информацией из массива или переменной?
@AzzraelCode
@AzzraelCode 3 года назад
Итерируя массив и используя методы append. В видео первый пример как раз об этом.
@ДмитрийТальский-е1ш
А можно ли создать сводную таблицу в Экселе на основании данных из Pythom, не создавая sheet в Экселе? Я имею ввиду создать сводную таблицу примерно так это создаётся из Power pivot например.
@AzzraelCode
@AzzraelCode 2 года назад
Мне не знаком Power Pivot, поэтому не уверен что я правильно понимаю ваш вопрос. Python может получить данные, обработать их и положить их в эксель в т. ч.
@АнатолийСоломонов-ж2п
Добрый день. Подскажите, а как перенос строки сделать? к примеру есть список ['1','2'] заполняется сейчас А1 B1 , а нужно А1 А2
@AzzraelCode
@AzzraelCode Год назад
Вам нужен двумерный массив [[1], [2]] Тогда 1 будет в A1, 2 в A2
@АнатолийСоломонов-ж2п
@@AzzraelCode к сожалению я плох в этом и не понимаю Вас(
@АнатолийСоломонов-ж2п
Умеете с json работать ?
@ApelsinArbuzov1
@ApelsinArbuzov1 2 года назад
К сожалению ищу и не нахожу как можно разделить информацию в ячейке. Допустим есть размер мебельной секции 700х450х2400. Я хочу выделить каждый размер из общей строки и записать его в следующие 3 пустые колонки, чтобы эти числа дальше умножать на цену за материал. И так каждый ряд (900 всего).
@vladimir7759
@vladimir7759 2 года назад
тоже самое, не нашел решение?
@ApelsinArbuzov1
@ApelsinArbuzov1 2 года назад
@@vladimir7759 =ЛЕВСИМВ(E6;ПОИСК("х";E6)-1) - первые две колонки. =ПРАВСИМВ(G6;ДЛСТР(G6)-ПОИСК("х";G6)) последняя колонка.
@vladimir7759
@vladimir7759 2 года назад
@@ApelsinArbuzov1 я хочу через openpyxl сделать
@ApelsinArbuzov1
@ApelsinArbuzov1 2 года назад
@@vladimir7759 Пока не понял как. Только в экселе
@vladimir7759
@vladimir7759 2 года назад
@@ApelsinArbuzov1 да я тоже не понял, а в екселе кнопка есть которая по столбцам разделяет
@АндрійБалабас
@АндрійБалабас 2 года назад
а как считать данные, если таблица на гугл диске?
@AzzraelCode
@AzzraelCode 2 года назад
Силами OpenPyXl никак.
@АндрійБалабас
@АндрійБалабас 2 года назад
@@AzzraelCode а вообще любые способы
@СергейПавлов-в9и
Очень мелко
Далее
Мини-курс Python + Excel за 25 минут
24:55
I Took An iPhone 16 From A POSTER! 😱📱 #shorts
00:18