Created
January 24, 2021 20:42
-
-
Save varnav/68b303ab10d32fb88483ed5f2f2856a9 to your computer and use it in GitHub Desktop.
Подстановка курсов валют ЦБ на заданную дату в xlsx файле
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
import datetime | |
import click | |
import requests | |
import xmltodict | |
from openpyxl import load_workbook | |
@click.command() | |
@click.argument('file', type=click.Path(exists=True)) | |
@click.argument('scol', default='A') | |
@click.argument('dcol', default='B') | |
def main(file, scol='A', dcol='B'): | |
""" | |
Подстановка курсов валют ЦБ на заданную дату в xlsx файле | |
Скрипт прочитает даты в столбце scol, и подставит для них курс валют в столбец dcol | |
Используется активный лист | |
:param file: Путь к файлу | |
:param scol: Исходный столбец (A если не указан) | |
:param dcol: Столбец назначения (B если не указан) | |
""" | |
wb = load_workbook(filename=file, data_only=True) | |
ws = wb.active | |
for cell in ws[scol]: | |
# print(cell.value) | |
# print(type(cell.value)) | |
if type(cell.value) is datetime.datetime: | |
d = cell.value.strftime("%d/%m/%Y") | |
else: | |
print("Тип ячейки " + str(cell.row) + " не дата.") | |
continue | |
url = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=" + d | |
print(url) | |
response = requests.get(url) | |
data = xmltodict.parse(response.content) | |
if data['ValCurs']['Valute'][10]['CharCode'] == 'USD': | |
rate = data['ValCurs']['Valute'][10]['Value'] | |
# rate = str(rate.replace(',', '.')) | |
print(rate) | |
ws[dcol + str(cell.row)] = rate | |
else: | |
print('Получен курс не USD') | |
exit(1) | |
wb.save(filename=file) | |
wb.close() | |
if __name__ == '__main__': | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment