-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.py
60 lines (40 loc) · 2.03 KB
/
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import openpyxl as xl
from openpyxl.chart import BarChart, Reference
def read_file(file_name):
return xl.load_workbook(file_name)
def get_sheet(workbook, sheet_name):
return workbook[sheet_name]
def create_columns_with_values(sheet, row_start_index, column_index_original_value, column_index_new_value):
for row in range(row_start_index, get_existing_amount_of_rows(sheet) + 1):
corrected_value = get_new_corrected_value(sheet, row, column_index_original_value)
insert_new_row_with_value(sheet, row, column_index_new_value, corrected_value)
def get_existing_amount_of_rows(sheet):
return sheet.max_row
def get_new_corrected_value(sheet, row, column_index):
cell = sheet.cell(row, column_index)
return cell.value * 0.9
def insert_new_row_with_value(sheet, row, column_index, corrected_value):
sheet.cell(row, column_index).value = corrected_value
def create_chart(sheet, start_row_index, get_column_index_new_place):
chart = BarChart()
values = get_values_from_given_range(sheet, start_row_index, get_column_index_new_place, get_column_index_new_place)
chart.add_data(values)
sheet.add_chart(chart, 'e2')
def get_values_from_given_range(sheet, min_row, min_column, max_column):
return Reference(sheet,
min_row=min_row,
max_row=get_existing_amount_of_rows(sheet),
min_col=min_column,
max_col=max_column)
def process_sheet(new_file_name):
wb = read_file(f'assets/transactions.xlsx')
sheet = get_sheet(wb, 'Sheet1')
row_start_index = 2
column_index_original_value = 3
column_index_new_value = column_index_original_value + 1
create_columns_with_values(sheet, row_start_index, column_index_original_value, column_index_new_value)
create_chart(sheet, row_start_index, column_index_new_value)
wb.save(f'assets/new_{new_file_name}.xlsx')
new_file_name = input('What should be the file name? ')
process_sheet(new_file_name)
print(f'Successfully created the file: new_{new_file_name}.xlsx')