Парсим файл Excel с помощью Python

Поделиться
HTML-код
  • Опубликовано: 8 ноя 2024

Комментарии • 67

  • @K-I-R-T
    @K-I-R-T Год назад +4

    Все круто, но снимай пожалуйста в 1080p

  • @pixel2749
    @pixel2749 2 года назад +5

    Здравствуйте!
    Начал изучать Pythone и для наглядности решил попрактиковать взаимодействия с Excel, ваше Видео как нельзя кстати! Можете записать ещё видео с практическими примерами? как вариант, вытаскивание данных из ячеек Excel, сортировка их по условию по условию, далее переносим полученные результаты в соседние ячейки Excel.

    • @ITGeneration2020
      @ITGeneration2020  2 года назад +2

      Спасибо за комментарий и подсказки! Обязательно сделаю!

    • @Evgeniytr
      @Evgeniytr Год назад +1

      @@ITGeneration2020 Интересный урок, хотелось бы продолжение увидеть, анализ полученных из эксель данных и их сохранение в эксель.

  • @cyber-jackal
    @cyber-jackal 2 года назад +3

    Спасибо! Очень качественный ролик! Я впервые на канале, сначала подумал, что у автора многотысячная аудитория, продолжай в том же духе!

    • @ITGeneration2020
      @ITGeneration2020  2 года назад +1

      Спасибо за комментарий и за теплые слова! Стараюсь для вас!

  • @tvorcuha
    @tvorcuha 2 года назад +7

    Благодарю, очень вовремя нашел, просто и понятно. Успехов 🙏🏼

    • @ITGeneration2020
      @ITGeneration2020  2 года назад +2

      Спасибо огромное за комментарий! Самое "зашедшее" моё видео, но почему-то комментариев нет))

  • @myata04
    @myata04 Год назад +2

    Как раз хотел изучить библеотеку openpyxl, спасибо, выручили

  • @yporotxx
    @yporotxx 9 месяцев назад +1

    Спасибо. всё четко понятно и по делу!

  • @f4ruke179
    @f4ruke179 2 года назад +5

    Недавно изучал данную библиотеку и совместил ее с PyQT5. То что я сейчас напишу будет полезно знать всем. Если обращаться к ячейке не по такому стилю: sheet[ "A1" ], а по такому sheet[ 1 ][ 0 ], то в случает если в ячейке не будет значения, то прога крашится, так как python думает, что мы вышли за пределы массива, но есть одна хитрость, можно сделать так: sheet[sheet[ 1 ][ 0 ].coordinate], sheet[ 1 ][ 0 ].coordinate возвращает нам координаты ячейки в стиле excel, , и в таком случае даже если в ячейки нет элемента, то исключения не возникнет, нам просто вернеться None. Вы можете спросить, а зачем нам такой стиль, я отвечу, чтобы разложить данные из таблицы с помощью вложенного цикла, количество строк и столбцов можно узнать с помощью методов max_row и max_column. Пример:
    for i in range(1, sheet.max_row + 1) # Начинаем c 1 строки, так как если начнем с 0 вылетит ошибка
    for j in range(0, sheet.max_column) # Проходимся по кол-ву столбцов
    print(sheet[sheet[ i ][ j ].coordinate], end=" ") # Выводим в консоль каждый элемент в каждой строке
    print() # Перенос на новую строку

    • @ITGeneration2020
      @ITGeneration2020  2 года назад +1

      Да, в планах было как раз подружить парсинг xlsx с оконным интерфейсом, но пока планы сдвигаются.
      За подсказку sheet[0][1].сoordinate спасибо, парсим с учениками очень громоздкий файл, вечно чего-то не хватает.

    • @f4ruke179
      @f4ruke179 2 года назад +2

      @@ITGeneration2020 Да я сам еще ученик, подумал, что те кто изучают данную библиотеку могут не знать об этом, надеюсь кому то пригодится, всем мирного неба над головой

  • @Serkwq
    @Serkwq 2 года назад +3

    Лучший канал!! Спасибо автору за познавательные видео!

  • @DomNaPechi
    @DomNaPechi Год назад +1

    Интересно посмотреть по фильтрации данных, выводу и суммированию отдельных ячеек, удаление дубликатов, форматирование ячеек на выходе в файле, т.е. в таком ключе. Пока пробовал в пандас и формат csv, почему-то именно так посоветовали. Но наверное можно и без пандас?

    • @ITGeneration2020
      @ITGeneration2020  Год назад +2

      Вообще пандас - лучший выбор, там много готовых функций, которые пришлось бы писать самим. Может, объединить усилия пандас и openpyxls, он больше для работы с файлами предназначен.

    • @DomNaPechi
      @DomNaPechi Год назад +1

      @@ITGeneration2020 с пандас я уже сделал, но в "дедах программистах" Написали, типа такое циклами проще... Вот и подумалось, реально ли? Я только изучаю питон, и многого не знаю🤷🏼‍♂️

  • @nikoe_dev
    @nikoe_dev Год назад +3

    Классно видео! Все по делу и простыми словами! Спасибо!

    • @ITGeneration2020
      @ITGeneration2020  Год назад +2

      Спасибо за комментарий, стараемся для вас!

  • @vasbkamarxil1260
    @vasbkamarxil1260 Год назад +2

    очень интересно спасибо

    • @ITGeneration2020
      @ITGeneration2020  Год назад

      спасибо вам за просмотр и комментарий

  • @ringogringo999
    @ringogringo999 2 года назад +3

    лукас и подписка. изменение и запись нада.

  • @EugenioHorvat
    @EugenioHorvat 2 года назад +3

    Подписан однозначно !

    • @ITGeneration2020
      @ITGeneration2020  2 года назад +3

      Однозначно спасибо!!! Планировал сегодня снять продолжение про запись в таблицу, даже уже было подготовился, написал пару скриптов по работе, но так и не дошли руки. Лайк если интересно!)))

    • @ITGeneration2020
      @ITGeneration2020  2 года назад +3

      Скрипты можно найти у меня в гитхабе, а гитхаб можно найти в одном из видео)

  • @kairatalmenov9558
    @kairatalmenov9558 Год назад +2

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

    • @ITGeneration2020
      @ITGeneration2020  Год назад +1

      Думаю, что нет, питон сам по себе довольно медленный язык. Так что если и будет выигрыш во времени, то несущественный.

  • @skyper1400
    @skyper1400 Год назад +2

    Благодарю за интересный материал. Есть только вопрос, можно ли сделать так, чтобы пользователь водил артикул(который условно находится в ячейке A2), а ему выводилась информация из ячейки B2 C2 D2)?

    • @ITGeneration2020
      @ITGeneration2020  Год назад +2

      То есть, чтобы после записи в определенную ячейку было чтение связанных с ней ячеек?

    • @CRESHT
      @CRESHT Год назад +1

      1) Создаешь список из колонки А; 2) затем ищешь артикул в списке 3) запоминаешь индекс 4) по индексу выводишь значение из соседних ячеек
      name_user = input()
      if name_user in spisok_1:
      print(sheet["N" + str(spisok_1.index(name_user))].value)

    • @skyper1400
      @skyper1400 Год назад

      @@ITGeneration2020да

    • @skyper1400
      @skyper1400 Год назад

      @@CRESHT спасибо

  • @HaHaHa55566
    @HaHaHa55566 2 года назад +3

    А сможешь написать парсер для телеграмма? Что бы он парсил названия чатов либо ссылки на чаты по заданным тематикам? Подскажи как, а лучше покажи)) с меня лайк и подписка)

    • @ITGeneration2020
      @ITGeneration2020  2 года назад +1

      Так-то можно, но есть вопрос - откуда он будет брать ссылки на чаты?

    • @HaHaHa55566
      @HaHaHa55566 2 года назад +1

      @@ITGeneration2020 к сожалению не знаю)

  • @it-kz3mo
    @it-kz3mo 2 года назад +3

    Народ по старинке делает расчеты вручную.Автоматизацией занимаются сейчас не все,а по старинке делают расчеты вручную,за несколько минут или часов.Зависит от данных и много других факторов.
    Когда таким людям предлагаешь автоматизировать расчеты-отказываются.Их право конечно,но это мягко говоря странно.И вообще-очень глупо отказываться от того,что тебя улучшает,хотя-каждому свое.....
    Даже во многих бытовых вопросах пытаюсь автоматизировать то,что мне нужно.Это я говорю для тех,кто считает мол,я не программист,зачем я буду заниматься кодом и темболее автоматизировать что то.Даже для решения бытовых вопросов многих пригодятся такие коды.Тот же расчет семейного бюджета например (первое,что пришло в голову).

    • @ITGeneration2020
      @ITGeneration2020  2 года назад +1

      Спасибо за комментарий. Так и есть. Такие люди и Экселем пользоваться не будут. Но это не хорошо и не плохо. Это данность.

    • @it-kz3mo
      @it-kz3mo 2 года назад +2

      @@ITGeneration2020 И еще я лично знаю людей,которые даже компа никонда не видели,даже почту отправлять не умеют,про то,чтобы уметь что то искать в интернете или вообше программировать-как говорится вообще молчу.....это при том,что мы живем во время очень быстрого развития сферы it.И такие люди часто учат жизни еще,хотя сами базы в айти не знают,в наше время это как ложку держать.....

  • @GlExcel
    @GlExcel 2 года назад +3

    а как сделать следующее:
    указать путь к файлам Excel и чтобы на выходе получили список вида: название файла, название листа внутри файла и так по всем файлам и листам..
    ??

    • @ITGeneration2020
      @ITGeneration2020  2 года назад +2

      Спасибо за комментарий! Сделаю на эту тему ролик в ближайшее время.
      Вы имеете в виду оконное приложение, когда пользователь указывает папку?

    • @GlExcel
      @GlExcel 2 года назад +2

      @@ITGeneration2020 можно и так, но можно просто в коде путь прописать, но лучше, чтобы указывал

  • @greatbritain1406
    @greatbritain1406 Год назад +1

    Здравствуйте. Как присвоить переменной значение из таблицы, ориентируясь на значения левого столбца и верхней строки?

    • @ITGeneration2020
      @ITGeneration2020  Год назад +1

      вы имеете в виду создать переменную с именем a1? или любую другую со значением, взятым из ячейки A1? Если последнее, то лист рассматривается как словарь, sheet['A1'] - мы обращаемся по адресу ячейки к содержимому. Нужно погрузиться в словари, они очень важны в питоне (да и в других языках). Весь питон по сути - один большой словарь.

    • @greatbritain1406
      @greatbritain1406 Год назад +1

      Взять значения по двум параметрам, например, взять из таблицы показатель адиабаты при определенном давлении (столбец слева) и определенной температуре( строка сверху), которые задаются вручную.

    • @greatbritain1406
      @greatbritain1406 Год назад

      @@ITGeneration2020 знаете как это сделать?

    • @CRESHT
      @CRESHT Год назад +1

      @@greatbritain1406 как понял находишь значение в левом столбике, от его индекса прыгаешь в нужную ячейку и берешь от туда значение

  • @vasbkamarxil1260
    @vasbkamarxil1260 Год назад +2

    допустим числа необходимо сравнить, у меня почему то ошибка(как исправить подскажите . . . в d1 D числа типа float
    for i in range(2, 6418):
    d1 = sheet['C'+str(i)].value
    D = sheet['D'+str(i)].value
    if d1 > D:
    print(sheet['A'+str(i)].value)
    TypeError: '>' not supported between instances of 'NoneType' and 'float'

    • @vasbkamarxil1260
      @vasbkamarxil1260 Год назад +2

      я разобрался спасибо все получилось)

    • @ITGeneration2020
      @ITGeneration2020  Год назад +1

      @@vasbkamarxil1260 Рады, что помогли вам даже молча)

    • @vasbkamarxil1260
      @vasbkamarxil1260 Год назад +1

      @@ITGeneration2020 с ключами бы ещё пример увидеть)

  • @vasbkamarxil1260
    @vasbkamarxil1260 Год назад +1

    здравствуйте работаю с excel, попытался написать прогу с поиском аналога через вложенный цикл, но что то идет не так и в 2 цикли все значения None. Не пойму что не так . . .
    from openpyxl import load_workbook
    fn = 'с.xlsx'
    book = load_workbook(fn, data_only=True)
    sheet = (book['Лист1'])
    maxrows = sheet.max_row
    for i in range(2, maxrows+1):
    if not sheet['A'+str(i)].value: #если пустое пропустить
    continue
    ID_PST = sheet['A'+str(i)].value
    stati = sheet['B'+str(i)].value
    d1 = sheet['C'+str(i)].value
    D = sheet['D'+str(i)].value
    H = sheet['E'+str(i)].value
    tip = sheet['F'+str(i)].value
    teflon = False
    if 'V' in str(tip):
    teflon = True
    # print(ID_PST,stati, d1, D, H, tip, teflon )

    for j in range(2, maxrows+1):
    if sheet['A'+str(i)].value == sheet['A'+str(j)].value:
    continue
    ID_PST_2 = sheet['A'+str(j)].value
    stati_2 = sheet['B'+str(j)].value
    d1_2 = sheet['C'+str(j)].value
    D_2 = sheet['D'+str(j)].value
    H_2 = sheet['E'+str(j)].value
    tip_2 = sheet['F'+str(j)].value
    teflon_2 = False
    if 'V' in str(tip_2):
    teflon_2 = True
    print(ID_PST_2, stati_2, d1_2, D_2, H_2, tip_2)
    # if (d1-0.2)

    • @abbabold7466
      @abbabold7466 Год назад

      привет, подскажи плиз:
      for i in range(2, maxrows+1)
      тут maxrows+1 это последний элемент? почему не maxrows-1 ?)

  • @pranks4167
    @pranks4167 2 года назад +2

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

    • @ITGeneration2020
      @ITGeneration2020  2 года назад +1

      Не очень понял вопрос, с какой ссылки данные нужно читать?

  • @nomatik6096
    @nomatik6096 Год назад

    хотел узнать можно ли убирать пробелы, если можно то как?
    в самом excel файле есть пробелы, их надо убрать именно через пайтон ищу уже второй день ответ

    • @ITGeneration2020
      @ITGeneration2020  Год назад +1

      В прочитанном split() - разделит на отдельные слова, replace(' ',''), для замены пробела на пустой символ

    • @CRESHT
      @CRESHT Год назад +1

      Методом str.replace(" ", "")

  • @zadovrus6719
    @zadovrus6719 Год назад +2

    Где это на практике может пригодиться? Почему нельзя просто открыть файл Exel и посмотреть на эти данные, а не выводить в программе наугад или постоянно заглядывая в тот же Exel файл. Кто-нибудь объясните!!!

    • @ITGeneration2020
      @ITGeneration2020  Год назад +1

      Отличный вопрос! Программы пишут, чтобы автоматизировать какую-нибудь деятельность. Конечно же, ради одной ячейки никто писать не будет, поэтому заголовок видео - "Парсим файл". Это чтение ячейки можно положить в цикл и прочитать весь лист целиком, чтобы потом программно работать с этими данными.

    • @CRESHT
      @CRESHT Год назад +1

      Мне на работе очень помогает. Я например очищаю фалы от мусора. Удаляю двойные пробелы, различные символы или произвожу замени одних символов на другие. Сами понимаете исправлять 150 тыс. записей руками - ну нет, спасибо!

  • @Bozon_Higgsa
    @Bozon_Higgsa 2 года назад +3

    ...