openpyxl 3.0.9
openpyxl 3.0.9
pip install openpyxl
from openpyxl import Workbook #импортируем Workbook - это сама книга Excel wb = Workbook() #создаем объект wb из класса Workbook() # grab the active worksheet ws = wb.active # устанавливаем активный лист в нашей книге, так как лист должен быть активный # Data can be assigned directly to cells ws['A1'] = 42 # в этот лист записываем данные # Rows can also be appended ws.append([1, 2, 3]) # также можем добавить строки # Python types will automatically be converted # Пайтон может автоматически конвертировать типы import datetime # мы заимпортировали datetime ws['A2'] = datetime.datetime.now() # и в ячейку А2 на активном листе записали текущие время datetime.datetime.now() # Save the file wb.save("sample.xlsx") # потом просто сохранили наш файл
Делаем свою программу
Читаем документацию по модулю
Как открыть книгу:
https://openpyxl.readthedocs.io/en/stable/search.html?q=open&check_keywords=yes&area=default
# This is a sample Python script. import openpyxl # Press Shift+F10 to execute it or replace it with your code. # Press Double Shift to search everywhere for classes, files, tool windows, actions, and settings. wb = openpyxl.reader.excel.load_workbook(filename='veon.xlsx') # мы в объект wb загрузили наш файл print(wb.sheetnames) # выводим на экран все листы из книги wb.active = 0 # создаем активный лист счет с нуля, поэтому активный лист VEON # Далее пробуем что-то с него считать, для этого нужно обратиться к этому листу sheet = wb.active # print(sheet['A1'].value) #Мы обратились к активному листу и вывели на экран значение ячейки А1 # далее мы можем пробежаться по всему листу и вывести все значения, сделаем это при помощи цикла for i in range(1,100): # Выводим с первой строкидо 98 строки # Для этого используем +str(i) str - строка i это счетчик из цикла print(sheet['A' + str(i)].value, sheet['B' + str(i)].value, sheet['C' + str(i)].value, sheet['D' + str(i)].value, sheet['E' + str(i)].value, sheet['F' + str(i)].value, sheet['G' + str(i)].value, sheet['H' + str(i)].value)
Результат получился примерно такой, только на 98 строк
Номер Дата торгов Время Инструмент Цена Кол-во Объем Операция 1 17.12.2021 11:45:14 VEON Ltd. [SPB: Акции] 1.67 2 3.34 Продажа 2 17.12.2021 11:45:25 VEON Ltd. [SPB: Акции] 1.68 1 1.68 Купля 3 17.12.2021 11:45:41 VEON Ltd. [SPB: Акции] 1.68 1 1.68 Купля 4 17.12.2021 11:46:40 VEON Ltd. [SPB: Акции] 1.68 1 1.68 Купля 5 17.12.2021 11:47:05 VEON Ltd. [SPB: Акции] 1.68 1 1.68 Купля 6 17.12.2021 11:47:29 VEON Ltd. [SPB: Акции] 1.67 1 1.67 Продажа
Нам этого мало попробуем написать тоже самое, только с переменными для того, чтобы потом подсчитать значения столбцов сколько было покупок и на какую сумму и сколько было продаж и на какую сумму
# This is a sample Python script. import openpyxl #сохраняем наш файлик в переменой book book = openpyxl.open('veon.xlsx', read_only=True)# открываем файл только на чтение read_only=True sheet = book.active #указываем на первый лист он активный по умолчанию поэтому метод .active #print (sheet[1][0].value)# обращаемся к ячейкам через ряд и колонку #Делаем цикл обхода строк # range не берет последнее значение, у нас был бы вывод без последней строчки, но мы поставили +1 sheet.max_row+1 и теперь последняя строка возьмется for row in range (1,sheet.max_row+1):#если хотим вывести все ряды, нужно у листа узнать сколько их там с помощью sheet.max_row # print (sheet[row])# берем из нашего листа значение ряда numbers = sheet[row][0].value #Колонка один это индекс 0 [0] получить содержимое это .value date_1 = sheet[row][1].value time_1 = sheet[row][2].value instrument = sheet[row][3].value cena = sheet[row][4].value kolvo = sheet[row][5].value obem = sheet[row][6].value operaciya = sheet[row][7].value print(numbers,date_1,time_1,instrument,cena,kolvo,obem,operaciya) # Запускаем и видим информацию о всех рядах с первого по 9 это если мы напишем цикл так for row in range (1,10):