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

Контакты

+7 (903) 799-53-65
E-mail: Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.

WhatsApp

+7 (903) 799-53-65
© 2000-2023