Python + OpenPyXl = Excel

แชร์
ฝัง
  • เผยแพร่เมื่อ 14 พ.ย. 2024

ความคิดเห็น • 76

  • @AzzraelCode
    @AzzraelCode  3 ปีที่แล้ว +3

    Документация к OpenPyXl openpyxl.readthedocs.io/en/stable/index.html
    Спасибо Автору azzrael.ru/spasibo

  • @monetary_supply
    @monetary_supply ปีที่แล้ว

    Толковый видос, неделю назад как раз искал хорошую библиотеку для excel. Пришлось на время записывать в csv. Но в excel конечно красивее, ещё и заливка есть, круто!

  • @vladimir-monin
    @vladimir-monin ปีที่แล้ว +2

    Привет! Классное видео! Мне не хватило примера простого шаблонизатора для данных - чтобы словари переводить в ексель и обратно.
    Т.е. непосредственно работа с данными

  • @damirzaripov3880
    @damirzaripov3880 2 ปีที่แล้ว +3

    Спасибо, очень полезно!

  • @gooryewood
    @gooryewood ปีที่แล้ว +1

    Классное видео, за что столько дизов?

  • @glamb_is_learning
    @glamb_is_learning ปีที่แล้ว

    Лучшее видео из тех, что я нашёл на данную тему. Спасибо!

  • @noookm
    @noookm 3 ปีที่แล้ว +1

    Тоже это использую. Видео ещё не смотрел, но 👍 и 🔔

    • @noookm
      @noookm 3 ปีที่แล้ว +2

      Досмотрел. Теперь понял про стили.
      Вопрос: используется цифра 999. В экселе столько строк с данными, или просто большое число, чтобы все строки пробежать?

    • @AzzraelCode
      @AzzraelCode  3 ปีที่แล้ว

      В моем коде цифра от фонаря для упрощения. А по правильному у класса Worksheet есть свойство max_row (а также min_col, min_row, max_col, max_row ).

    • @noookm
      @noookm 3 ปีที่แล้ว +1

      @@AzzraelCode понял. Спасибо.

  • @pavelpeklov3825
    @pavelpeklov3825 9 หลายเดือนก่อน

    Очень интересно. Пожалуйста, рассмотрите графики, как их строить

  • @MrRealwin
    @MrRealwin 3 ปีที่แล้ว +1

    Спасибо за контент!

  • @vasbkamarxil1260
    @vasbkamarxil1260 ปีที่แล้ว

    Огонь!!!

  • @dailyvideo1593
    @dailyvideo1593 2 ปีที่แล้ว

    супер, контент в кайф, давай еще!
    Лайк однозначно)

  • @Abramov_Andrey
    @Abramov_Andrey ปีที่แล้ว

    Отличное видео, спасибо! А может известно как сделать через openpyxl выпадающий список в ячейках/столбцах Excel? и общий доступ к файлу Excel сделать, что бы в нем одновременно несколько человек сидели и работали?

    • @Abramov_Andrey
      @Abramov_Andrey ปีที่แล้ว

      ... в общем я разобрался как это сделать))

  • @noookm
    @noookm 3 ปีที่แล้ว +2

    У ячейки есть такой метод column_letter. А как получить названия колонок у объединённой ячейки?
    Я додумался только до двух вариантов
    0) получить wb.cell(row, col).coordinate и тут убрать цифры справа
    1)получить wb.merged_cells.ranges и уже оттуда, например , уже как-то получить названия колонок

    • @AzzraelCode
      @AzzraelCode  3 ปีที่แล้ว +1

      Как такой вариант?
      get_column_letter(sheet.merged_cells.ranges[0].min_col)

    • @noookm
      @noookm 3 ปีที่แล้ว +1

      @@AzzraelCode спасибо, гляну. Может поможет.

    • @noookm
      @noookm 3 ปีที่แล้ว +1

      @@AzzraelCode посмотрел. Нашёл более подходящее решение через openpyxl.utils.cell.coordinate_from_string(coord_string). Не знал, что есть ещё openpyxl.utils. Спасибо большое.

  • @Vol4ikk
    @Vol4ikk 2 ปีที่แล้ว +1

    Спасибо за такое видео, отличный слог, приятно слушать и лего воспринимается
    Подскажите пожалуйста, как можно открывать файлы, указанные пользователем?
    Переименовывать каждый раз файл в, например, test.xlsx неудобно совсем, может есть какие-то варианты, через графику например?
    Открываю через book = openpyxl.load_workbook('test.xlsx')
    Спасибо еще раз!

    • @AzzraelCode
      @AzzraelCode  2 ปีที่แล้ว +1

      Спасибо за оценку. Не очень понял что значит файлы указанные пользователем?

    • @Vol4ikk
      @Vol4ikk 2 ปีที่แล้ว

      ​@@AzzraelCode жаль тут скрин нельзя приложить :)
      Я собрал скрипт, который в первую очередь проверяет данные в уже имеющейся таблице. Но файлы всегда называются по разному, переименовывать их в "test.xlsx" и класть в папку со скриптом - проблема, возникнет путаница.
      То есть мне нужно как-то указывать скрипту, с каким именно файлом .xlsx ему нужно работать

    • @AzzraelCode
      @AzzraelCode  2 ปีที่แล้ว +1

      Понял. Погуглите про модули python argparse или click (я предпочитаю второй).

    • @Vol4ikk
      @Vol4ikk 2 ปีที่แล้ว

      @@AzzraelCode погуглил, спасибо за направление, круто!

  • @ФдрФфф
    @ФдрФфф ปีที่แล้ว +1

    А как добавить данные в столбец по его номеру?
    Например, хочу добавить число в 15-й столбец 3-я строка, а какая у столбца буква не знаю.

    • @ФдрФфф
      @ФдрФфф ปีที่แล้ว +1

      И спасибо за очередное качественное и полезное видео.

    • @ФдрФфф
      @ФдрФфф ปีที่แล้ว +1

      Отвечу сам себе: нужно использовать get_column_letter( 15 ) -> вернёт букву столбца 15.

  • @sergeys.4379
    @sergeys.4379 3 ปีที่แล้ว +2

    А можете порекомендовать пакет для работы с ods? Понятно что можно файл пересохранить в xlsx и работать через openpyxl, но хотелось бы работать с форматами опеноффиса напрямую....

    • @AzzraelCode
      @AzzraelCode  3 ปีที่แล้ว

      С OpenOffice не работал от слова совсем. Поэтому ничем не смогу помочь, к сож. По большому счету и экселем то уже не пользуюсь почти. Все что требует таблиц давно перевел в Google Sheets.

  • @AZmievsky
    @AZmievsky ปีที่แล้ว

    Напрягают постоянные дергающие метания курсором по экрану...

  • @bahubali_onegreat4324
    @bahubali_onegreat4324 2 ปีที่แล้ว

    @Azzrael_Code, вопрос, у меня написан код (модификация таблиц с помощью ... 12:03) один в один как у тебя (уверен на 100%) но у меня не происходят изменения в файле ексель. но ошибок прога не видит ? что делать ? может у меня что то не правильно настроено ?

  • @viktoragusev
    @viktoragusev ปีที่แล้ว

    Можно ли применить ширину колонки сразу для нескольких столбцов?

  • @eYVgeni
    @eYVgeni 3 ปีที่แล้ว +2

    Отлично. Сколько не смотрел по openpyxl - все очень поверхостно в отличии от этого видео. В процессе просмотра возник вопрос - почему вы удаляете по молчанию созданную вкладку, а не переименовываете ее ? И второй вопрос, когда мы задаем щирину колонки с помошью column_dimensions то обращаемся к колонке по ее буквенному индексу, а как поступить, если хочется обратиться к колонке по ее цифровому номеру, ведь к ячейке можно обращаться и так cell(row=3, column=1)

    • @AzzraelCode
      @AzzraelCode  3 ปีที่แล้ว +1

      > почему вы удаляете по молчанию созданную вкладку, а не переименовываете ее
      я и так и так делаю по настроению.
      > обратиться к колонке по ее цифровому номеру
      в openpyxl.utils есть метод get_column_letter(i), где i - индекс колонки начиная с 1

    • @eYVgeni
      @eYVgeni 3 ปีที่แล้ว +1

      @@AzzraelCode за get_column_letter(i) спасибо, хотя я надеялся что можно проще :-)

  • @kairatalmenov9558
    @kairatalmenov9558 ปีที่แล้ว

    ДД. у меня вопрос: если например стоит задача обработать/проанализировать некий массив данных excel. пытаюсь сделать это через макрос VBA, но скорость как-то не устраивает. Вопрос: если тот же алгоритм реализовать через Питон, то будет ли ускорение работы по сравнению с VBA?

    • @AzzraelCode
      @AzzraelCode  ปีที่แล้ว

      Я не сравнивал, но stackoverflow.com/questions/35383325/efficiency-openpyxl-or-vba

  • @endresk9403
    @endresk9403 2 ปีที่แล้ว

    Может кто знает:
    Помешаю данные списком в sheet.cell (где sheet это sheet = book[текущий файл или создаю если его нет]) и сохраняю.
    Но есть один столбец в ячейки которого помешается текст количеством символов в районе 1000, и кб 2 где считал.
    Так вот когда excel открываю, у меня в этой ячейке может весь текст быть, а в ячейке ниже не полностью, обрезанный, при каждом запуске цикла, объем меняется текста.
    При этом после записи, если задам строго принт на ячейку (value) получаю весь текст, а в excel не весь.
    Подскажите в чем может быть проблема.
    Так же может как то изменять размер заметил строка:
    cell.alignment = Alignment(wrapText=True, vertical="top")
    Еще изменяю по ширине и высоте текста размер ячейки, если их убрать текст так же может не полностью отобразится, а может полностью всегда рандомно. Получается, что при записи что то не так записывается (именно с этим столбцом) и я хз что, вторые сутки ищу. В поисковиках инфы найти не могу.

  • @vladimir7759
    @vladimir7759 2 ปีที่แล้ว

    Как разделить фио по ячейкам?

  • @rustamgroza9692
    @rustamgroza9692 2 ปีที่แล้ว

    Не до конца понял, а как сделать сортировку по алфавиту в столбце. Если не сложно , можете хотя бы пример кинуть

    • @AzzraelCode
      @AzzraelCode  2 ปีที่แล้ว

      У OpenPyXl нет функционала сортировки.

  • @ДмитрийГордеев-б9б
    @ДмитрийГордеев-б9б 3 ปีที่แล้ว

    Спасибо за видео
    Не понимаю как поступить в первом примере когда нужно сохранить dataframe в xlsx. куча вариаций append не спасает

    • @AzzraelCode
      @AzzraelCode  3 ปีที่แล้ว

      По панде и экселю у меня есть отдельный ролик th-cam.com/video/Q6LtTnrB8es/w-d-xo.html

  • @waltage
    @waltage ปีที่แล้ว

    жаль что питон не может строку превратить в переменную типа "gold =100" в gold=100

  • @SmagroShop
    @SmagroShop 11 หลายเดือนก่อน

    Замудрил капец, одна программа -вторая- там вызови- тут нажми- сущностей насоздавал, повторить мне с нуля было проблемно, в 90% случаев эксель файл приходит со стороны

  • @АнатолийГО-ж2п
    @АнатолийГО-ж2п ปีที่แล้ว

    Добрый день. Подскажите, а как перенос строки сделать? к примеру есть список ['1','2'] заполняется сейчас А1 B1 , а нужно А1 А2

    • @AzzraelCode
      @AzzraelCode  ปีที่แล้ว

      Вам нужен двумерный массив
      [[1], [2]]
      Тогда 1 будет в A1, 2 в A2

    • @АнатолийГО-ж2п
      @АнатолийГО-ж2п ปีที่แล้ว

      @@AzzraelCode к сожалению я плох в этом и не понимаю Вас(

    • @АнатолийГО-ж2п
      @АнатолийГО-ж2п ปีที่แล้ว

      Умеете с json работать ?

  • @mickey5995
    @mickey5995 3 ปีที่แล้ว +5

    Совет, не начинайте объяснять с уже заполненным кодом, начинайте писать все с нуля.

    • @AzzraelCode
      @AzzraelCode  3 ปีที่แล้ว +6

      А зачем это зрителю? Продолжительность видео увеличится втрое и большую его часть вы будете наблюдать как на экране появляются символы, а качество кода будет хуже ( не буду же я на видео, например, писать комменты к методам ). Я сужу по себе - смотреть такие видео - боль. Вроде и промотать хочется, а вдруг что важное пропущу. Поэтому такой контент я чаще смотрю на скорости 1.5.
      ~~
      Смысл в таком видео есть для автора. В длинные видео помещается больше рекламы, а потому ютюб любит такие видео ;) и часто длинные видео лучше ранжируются. Поэтому вполне возможно я последую вашему совету ;), но я убежден что для разработчика чуть выше абсолютного новичка готовый, хорошо задокументированный код лучше.

  • @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 ปีที่แล้ว +1

      я написал цикл который мне был необходим:
      for row_num in range (1, ws.max_row + 1):
      ws.row_dimensions[row_num].height = 25
      (пример)
      Спасибо за видео было очень полезно, особенно со стилизацией .

  • @АнатолийГО-ж2п
    @АнатолийГО-ж2п ปีที่แล้ว

    А как сдвиг сделать? Мне нужно столбец F полностью передвинуть влево - 3

    • @AzzraelCode
      @AzzraelCode  ปีที่แล้ว

      По разному можно. С помощью Pandas например так
      df.insert(2, 4, df.pop(4))

  • @kuro4144
    @kuro4144 3 ปีที่แล้ว

    Как заполнить ячейку от A1 до A200 информацией из массива или переменной?

    • @AzzraelCode
      @AzzraelCode  3 ปีที่แล้ว

      Итерируя массив и используя методы append. В видео первый пример как раз об этом.

  • @ДмитрийТальский-е1ш
    @ДмитрийТальский-е1ш 3 ปีที่แล้ว

    А можно ли создать сводную таблицу в Экселе на основании данных из Pythom, не создавая sheet в Экселе? Я имею ввиду создать сводную таблицу примерно так это создаётся из Power pivot например.

    • @AzzraelCode
      @AzzraelCode  3 ปีที่แล้ว

      Мне не знаком Power Pivot, поэтому не уверен что я правильно понимаю ваш вопрос. Python может получить данные, обработать их и положить их в эксель в т. ч.

  • @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 ปีที่แล้ว

    а как считать данные, если таблица на гугл диске?

  • @linux457
    @linux457 3 ปีที่แล้ว +1

    где второй лайк постаить ?

  • @ИгорьШколаберда-ц4р
    @ИгорьШколаберда-ц4р 2 ปีที่แล้ว

    как можно запутанно так излагать и главное пример на запись не работает

    • @AzzraelCode
      @AzzraelCode  2 ปีที่แล้ว

      Можно. Хорошо что ютюб большой ;)

  • @СергейПавлов-в9и
    @СергейПавлов-в9и ปีที่แล้ว

    Очень мелко