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):