🫵 Теория без практики - ничто, поэтому 👇 🐍 stepik.org/course/63085/promo 👉 специально для тебя создал бесплатный топовый курс по Python 👉 В нем тебя ждет: 📗 более 400 практических заданий на программирование 📗 более 250 тестовых заданий на проверку материала 📗 десятки часов видеоматерилов по теории 📗 видеоразборы решения заданий 📗 текстовые материалы по урокам, примеры кода 📗 доступ к закрытому чату с дружественной обстановкой 📗 сертификат в случае успешного прохождения курса
Спасибо за урок. От себя хотел бы добавить, что read_only=True существенно замедляет работу программы. У меня был файл на 1100 строк и работа длилась очень долго, документ парсился около 10-20 минут, не мог понять в чем причина, убрал read_only и все полетело. И вместо функции open лучше использовать load_workbook, это тоже увеличивает скорость работы.
Всё понятно, спасибо. Может сделаешь выпуск про запись/сохранение, работа с диаграммой, настройки штрифтов и т.д? Сложно найти русскоязычных программистов, которые так доходчиво объясняют.
Код если надо из экселя все засунуть в словарь первый столбец ключ а второй значение import openpyxl book = openpyxl.open('first1.xlsx', read_only=True) sheet = book.active data={} for row in range(2,sheet.max_row+1): data[sheet[row][0].value] = sheet[row][1].value print(data)
У кого проблемы с работой модуля, попробуйте установить более старый интерпретатор питона. У меня стояла 3.10.10, я скачал 3.10.8 и всё заработало. Видимо библиотека ещё не адаптирована под новый интерпретатор
по видео набрасал для себя # Как считывать данные из ексель excel файла import openpyxl book = openpyxl.open("data.xlsx", read_only=True) sheet = book.active # работаем с диапазоном cells = sheet['B1':'C11'] - выводится кортеж значений # для вывода что во втором или третьем столбце кортежа ( то есть имя и год из таблицы # for name, year, rating in cells: # print(name.value, year.value, rating.value) # встроенный метод итер роутс # for row in sheet.iter_rows(min_row=2, max_row=20, min_col=1, max_col=3): # print (row) # каждое значение кортеж и его можно обходить # и ячейки можно ыводить раз кортеж # for row in shhet.iter_rows(min_row=2, max_row=20, min_col=1, max_col=3): # for cell in row: # print(cell.value, end=_' ') # print() # если вы будете ничего передавать # мы обойдем целиком файлик от макс роу до макс column # for row in shhet.iter_rows(): # for cell in row: # print(cell.value, end=_' ') # print() # #как получить значения из другого листа ворк шит прдеставляет список из листов # #сохраним в переменной шит #sheet_2 = book.worksheets[2] #print(sheet_2) # обращаясь по индексу а2 можно получать другое какое либо значение # #print(sheet_2['A2']) # # # print(sheet[1][0].value) for row in range(1,sheet.max_row+1): #если файл большой for row in range(1,10): не 10-ть штук а больше, то можем у листа узнать при помощи атрибута max_row то есть for row in range(1,sheet.max_row) # год содержиться во второй колонке, рейтинг в третьей, ко всем ячейкам обращаемся к валио value хотим получить содержимое author = sheet[row][0] name = sheet[row][1] year = sheet[row][0] rating = sheet[row][3].value print(author, name, year, rating) # выведем ряд перед автором, print(author, name, year, rating) чтобы понимали какой ряд выводиться сейчас print(row, author, name, year, rating) # если хотите дойти до конца файлика
Классный урок!!! Только у меня вопрос, если по каким то причинам max_row выдает не правильное количество строк с данными, как можно по-другому посчитать строки имеющие какие-то данные? К примеру через какой-нибудь цикл???
при попытке открыть Excel таблицу таким образом получаю KeyError: "There is no item named 'xl/sharedStrings.xml' in the archive" второй день ищу решение этой ошибки, но никакой нормальной информации, что делать и в чем причина, так и не нашел
Я так понимаю, это подводка к тому что Pandas тоже может парсить Excel? И по моему делает это побыстрее. А так объективно один из лучших каналов про Python. И с дикцией у вас все норм и с донесением материала. Спасибо за труд!
Спасибо 🖐️☺️ было бы круто если бы вы показали как быстро сделать словарь из данных в Экселе и как изменять данные в Экселе ☺️придется самому пока сделать в качестве домашнего задания😁
Можете рассказать про совместную работу pandas и openpylx ? Как записать DataFrame в excel, чтобы форматы не съезжали, а другие листы файла excel не удалялись. Заранее спасибо!
Объясните пожалуйста на счет range в данном примере. Ведь range же просто генерирует диапазон чисел который мы указываем в () как получается что в этом случае range берет то количество строк из ексель а не просто генерирует числа указанные в ()?
Подскажите, плз, почему при записи данных в excel, сохраняются данные только с первой страницы. path = 'business.xlsx' df = pd.DataFrame(items_list) with ExcelWriter(path, engine='openpyxl', mode='a' if os.path.exists(path) else 'w') as writer: df.to_excel(writer, sheet_name='New', index=False)
6:24 хз почему но у меня Макс роу выдавал ноне, и посчитать соответственно ничего не мог, искал почему так и нашел на стаковерфлоу код который считает максимум рядов сам и значение это подставлять вместо Макс роу в рендж
Нет, это сама библиотека просчитывает. В файле моей просто несколько последних колонок пустые openpyxl.readthedocs.io/en/stable/api/openpyxl.worksheet.worksheet.html#openpyxl.worksheet.worksheet.Worksheet.max_column
Эти колонки как-то редактировались, например изменили ширину столбцов. А ексель запомнил, что ячейки пустые, но не такие, как все по умолчанию. Поэтому и считает их тоже как активные.
11:00 можно на место end = не ставить пробел, а потом ещё и print в конце цикла, а поставить Вот как это будет выглядить: ... For cell in row: print(cell.value, end = ' ')
Добрый день, подскажите пожалуйста можно использовать Python для того что бы опубликовать на сайте Excel таблицу с возможностью вносить в неё данные через сайт ? Или для этого лучше подойдёт другой язык программирования?
А как найти информацию в таблице и только её вывести на экран. (Например при запуске программа просит пользователя ввести интересующую информации, потом программа ищет в экселе и выводит значение уже из таблицы)? Заранее спасибо
Привет. Хорошее видео. У меня вопрос. Pyexcel еще в деле? Или удобнее и лучше через Openpyxl ? Единственный туториал для pyexcel и тот уже не актуальный после выхода новой версии. Уже неделю хочу простую вещь зделать. В таблицу OpenOfficeCalc хочу от ткинтера заносить данные и чтобы они (Имя.Фам.Число. Дни ) были сортированы по календарному отсчету. Может ктонибудь подсказать сайт или какуюто инфу. Я только начал пайтон изучать и вообще не бум бум пока. Маленькие основы есть, раньше MOffice VBA баловался. Но столько лет прошло.
Чувак, ты лучший, есть ли у тебя урок, как из файла Эксель брать инфу по конкретному значению, например, в столбце адреса городов, в отдельном столбце ему принадлежит числовой индекс. Смысл операции такой: по названию конкретного города в строках находить и выводить индексы, которые соответствуют городу. Реализация через Пайтон.
Суперлайк! Спасибо полезно А можно передавать в Эксель информацию? Больше интересно передать настройки отображения данных листа ексель. Хоть ссылочку может дадите?
@@egoroffchannel c пустыми ячейками разобрался, была проблема в файле, но возникает другая, когда пытаюсь прочитать в цикле (for row in range(1, sheet.max_row)) - выдает ошибку (for row in range(1, sheet.max_row): TypeError: 'NoneType' object cannot be interpreted as an integer)
Не знаю читаешь ли ты тут еще комменты, но все же спрошу, у меня скачивается excel и при попытке пройтись по строкам выводит только одну и такое предупреждение: UserWarning: Workbook contains no default style, apply openpyxl's default warn("Workbook contains no default style, apply openpyxl's default") Если пересохранить файл, то все нормально, но проблема в том что excel у меня большой (500 тыс. строк) и кроме как в рид онли я его не могу использовать, что может помочь в данном случае?
@@egoroffchannel Кто-то писал вроде что это формат Apache POI и как бы оно все в одном месте хранится для каких-то целей, по индексу получается выводить только первый столбец, в других тюпл не в рендже.