Я пишу программу для своей работы, которая будет читать файл Excel, сортировать по дистрибьютору, а затем форматировать каждый и записывать их в свой собственный файл Excel.
Обычно выполняется вручную, это занимаетнесколько дней, чтобы скопировать и вставить, отформатировать, а затем сохранить каждый файл для каждого распространителя.Мне удалось заставить его записать их все в их собственный файл Excel, только у меня возникли проблемы с форматированием.
Я хотел, чтобы все кредитовые авизо были отформатированы красным шрифтом, однако при применении этогоформат, он переопределяет форматирование чисел, которое у меня есть, в столбцах «деньги» и «проценты».
Кроме того, у меня возникают проблемы с добавлением итога в нижнюю часть двух конкретных столбцов.Мне нужны только итоги в 2 столбцах, а остальные столбцы для этой строки должны быть пустыми.
Любая помощь с этим будет принята с благодарностью!
Я попытался отформатировать красный текстперед форматированием числа, но затем, когда применяется форматирование числа, оно возвращается к черному шрифту.
import pandas as pd
sheet_name = 'Report - May 2019'
data = pd.read_excel(r'path.xlsx')
df = pd.DataFrame(data)
# Store each unique distributor in a list
distributors = df['Distributor'].unique().tolist()
for d in distributors:
path = r"path.xlsx"
is_dist = df['Distributor'] == d
dist = df[is_dist]
writer = pd.ExcelWriter(path, engine='xlsxwriter')
dist.to_excel(writer, index=False, sheet_name=sheet_name, startrow=1, header=False)
workbook = writer.book
worksheet = writer.sheets[sheet_name]
# Add header format
header_format = workbook.add_format({
'bold': True,
'text_wrap': True,
'fg_color': '#3FB6FF',
'border': 1
})
# Set header and column width and format header
for col_num, value in enumerate(dist.columns.values):
worksheet.write(0, col_num, value, header_format)
column_len = dist[value].astype(str).str.len().max()
column_len = max(column_len, len(value))
worksheet.set_column(col_num, col_num, column_len)
Это проблема
# Set Credit Memo to Red Font
cm_red_font = workbook.add_format({'font_color': 'red'})
num_rows = len(dist.index)
for row in range(num_rows):
if dist.iloc[row, 14] < 0:
worksheet.set_row(row + 1, 15, cm_red_font)
# Add a total to 'Total Product Invoiced Amount' Column
#sales_sum = dist['Total Product Invoiced Amount'].sum()
#dist.append(pd.DataFrame)
#print(str(d), dist['Total Product Invoiced Amount'].iloc[len(dist.index)])
# Format money columns
money_format = workbook.add_format({'num_format': '#0.00'})
worksheet.set_column('L:M', 12, money_format)
worksheet.set_column('O:O', 12, money_format)
# Format percent column
percent_format = workbook.add_format({'num_format': '0%'})
worksheet.set_column('N:N', 12, percent_format)
# Format date columns
date_format = workbook.add_format({'num_format': 'mm/dd/yyyy'})
worksheet.set_column('B:B', 12, date_format)
worksheet.set_column('F:F', 12, date_format)
writer.save()
Ожидаемый результат - несколько файлов Excel, правильно отформатированных на основе условного форматирования.