我正在为自己的工作编写一个程序,该程序将读取一个excel文件,按分发者排序,然后格式化每个文件并将其写入自己的excel文件。
通常手动完成,这需要几天的时间才能复制,粘贴,格式化,然后为每个分发服务器保存每个文件。我设法将它们全部写入自己的excel文件中,只有我在格式化方面遇到麻烦。
我希望所有Credit Memos都以红色字体设置格式,但是当我应用这种格式时,它将覆盖我在money和percent列中使用的数字格式。
此外,我在将总计添加到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文件,这些文件的格式取决于条件格式。