柚子快報(bào)邀請(qǐng)碼778899分享:貨物數(shù)據(jù)處理pandas版
柚子快報(bào)邀請(qǐng)碼778899分享:貨物數(shù)據(jù)處理pandas版
1求和
from openpyxl import load_workbook
import pandas as pd
def print_hi(name):
# Use a breakpoint in the code line below to debug your script.
print(f'Hi, {name}') # Press Ctrl+F8 to toggle the breakpoint.
# Press the green button in the gutter to run the script.
if __name__ == '__main__':
filePath1 = './src/原始數(shù)據(jù)精修.xlsx'
df1 = pd.read_excel(filePath1, sheet_name='銷售明細(xì)')
index_list = ['部門名稱', '年度名稱', '季節(jié)名稱', '商品代碼', '商品名稱', '品牌名稱', '品類名稱', '顏色名稱']
# 求和方法二,需將文本的列指定為索引
df1 = df1.set_index(index_list)
df1['合計(jì)'] = df1.apply(lambda x: x.sum(), axis=1)
filePath2 = './src/處理結(jié)果精修.xlsx'
#重置索引,防止單元格合并
df1 = df1.reset_index()
df1.to_excel(filePath2, sheet_name="new_sheet", index=False, na_rep=0, inf_rep=0)
print(df1)
2.去除季節(jié)年度進(jìn)行聚類
#去除年度和季節(jié)進(jìn)行聚類
df2 = pd.read_excel(filePath2, sheet_name='單款排名')
df2.pop('年度名稱')
df2.pop('季節(jié)名稱')
index_list = ['部門名稱', '商品代碼', '商品名稱', '品牌名稱', '品類名稱', '顏色名稱']
value_list = ['0M','1L','1XL','27','28','29','2XL','30','3XL','4XL','5XL','6XL','S','均','合計(jì)']
#使用透視表聚合
df2 = df2.pivot_table(index= index_list,values=value_list,aggfunc='sum')
# 重置索引,防止單元格合并
df2 = df2.reset_index()
#將合計(jì)列放到最后面
#dataframe中某一列放到最后,并改名為銷售明細(xì)
df2['銷售明細(xì)'] = df2.pop('合計(jì)')
df2.to_excel(filePath2, sheet_name="單款排名", index=False, na_rep=0, inf_rep=0)
3完整數(shù)據(jù)處理過程代碼
from openpyxl import load_workbook
import pandas as pd
def print_hi(name):
# Use a breakpoint in the code line below to debug your script.
print(f'Hi, {name}') # Press Ctrl+F8 to toggle the breakpoint.
# Press the green button in the gutter to run the script.
if __name__ == '__main__':
filePath1 = './src/原始數(shù)據(jù)精修.xlsx'
# 加載工作簿
wb = load_workbook(filePath1)
# 獲取sheet頁,修改第一個(gè)sheet頁面為
name1 = wb.sheetnames[0]
ws1 = wb[name1]
ws1.title = "銷售明細(xì)"
wb.save(filePath1)
#銷售明細(xì)
df1 = pd.read_excel(filePath1, sheet_name='銷售明細(xì)')
index_list = ['部門名稱', '年度名稱', '季節(jié)名稱', '商品代碼', '商品名稱', '品牌名稱', '品類名稱', '顏色名稱']
# 求和方法二,需將文本的列指定為索引
df1 = df1.set_index(index_list)
df1['合計(jì)'] = df1.apply(lambda x: x.sum(), axis=1)
filePath2 = './src/處理結(jié)果精修.xlsx'
#重置索引,防止單元格合并
df1 = df1.reset_index()
df1.to_excel(filePath2, sheet_name="new_sheet", index=False, na_rep=0, inf_rep=0)
#單款排名
#去除年度和季節(jié)進(jìn)行聚類
df2 = df1.copy()
df2.pop('年度名稱')
df2.pop('季節(jié)名稱')
index_list = ['部門名稱', '商品代碼', '商品名稱', '品牌名稱', '品類名稱', '顏色名稱']
value_list = ['0M','1L','1XL','27','28','29','2XL','30','3XL','4XL','5XL','6XL','S','均','合計(jì)']
#使用透視表聚合
df2 = df2.pivot_table(index= index_list,values=value_list,aggfunc='sum')
# 重置索引,防止單元格合并
df2 = df2.reset_index()
#將合計(jì)列放到最后面
#dataframe中某一列放到最后,并改名為銷售明細(xì)
df2['銷售明細(xì)'] = df2.pop('合計(jì)')
df2.sort_values(by="銷售明細(xì)", axis=0, ascending=False, inplace=True)
#品牌排名
df3 = df1.copy()
# 使用透視表聚合
df3 = df3.pivot_table(index='品牌名稱', values='合計(jì)', aggfunc='sum')
# 重置索引,防止單元格合并
df3 = df3.reset_index()
# 將合計(jì)列放到最后面
# dataframe中某一列放到最后,并改名為銷售明細(xì)
df3['銷售明細(xì)'] = df3.pop('合計(jì)')
df3.sort_values(by="銷售明細(xì)", axis=0, ascending=False, inplace=True)
#年度銷售
df4 = df1.copy()
# 使用透視表聚合
print(df4)
df4 = df4.pivot_table(index=['年度名稱', '季節(jié)名稱'], values='合計(jì)', aggfunc='sum')
# 重置索引,防止單元格合并
df4 = df4.reset_index()
# 將合計(jì)列放到最后面
# dataframe中某一列放到最后,并改名為銷售明細(xì)
df4['銷售明細(xì)'] = df4.pop('合計(jì)')
df4.sort_values(by="銷售明細(xì)", axis=0, ascending=False, inplace=True)
#季節(jié)銷售
df5 = df1.copy()
#使用透視表聚合
df5 = df5.pivot_table(index=['季節(jié)名稱'], values='合計(jì)', aggfunc='sum')
# 重置索引,防止單元格合并
df5 = df5.reset_index()
df5['銷售明細(xì)'] = df5.pop('合計(jì)')
df5.sort_values(by="銷售明細(xì)", axis=0, ascending=False, inplace=True)
#品類排名
df6 = df1.copy()
# 使用透視表聚合
df6 = df6.pivot_table(index=['品類名稱'], values='合計(jì)', aggfunc='sum')
# 重置索引,防止單元格合并
df6 = df6.reset_index()
df6['銷售明細(xì)'] = df6.pop('合計(jì)')
df6.sort_values(by="銷售明細(xì)", axis=0, ascending=False, inplace=True)
# print(df1)
# 加載工作簿
filePath2 = './src/處理結(jié)果精修.xlsx'
wb = load_workbook(filePath2)
#客戶周銷
df7 = pd.DataFrame({'商店名稱':[], '銷售數(shù)量':[]})
#創(chuàng)建表
ws2 = wb.create_sheet("單款排名")
ws3 = wb.create_sheet("品牌排名")
ws4 = wb.create_sheet("年度銷售")
ws5 = wb.create_sheet("季節(jié)銷售")
ws6 = wb.create_sheet("品類排名")
ws7 = wb.create_sheet("客戶周銷")
wb.save(filePath2)
#將生成的工作表導(dǎo)入到程序中
result_sheet = pd.ExcelWriter(filePath2, engine='openpyxl') # 先定義要存入的文件名xxx,然后分別存入xxx下不同的sheet
df1.to_excel(result_sheet, "銷售明細(xì)", index=False, na_rep=0, inf_rep=0)
df2.to_excel(result_sheet, "單款排名", index=False, na_rep=0, inf_rep=0)
df3.to_excel(result_sheet, "品牌排名", index=False, na_rep=0, inf_rep=0)
df4.to_excel(result_sheet, "年度銷售", index=False, na_rep=0, inf_rep=0)
df5.to_excel(result_sheet, "季節(jié)銷售", index=False, na_rep=0, inf_rep=0)
df6.to_excel(result_sheet, "品類排名", index=False, na_rep=0, inf_rep=0)
df7.to_excel(result_sheet, "客戶周銷", index=False, na_rep=0, inf_rep=0)
# 這步不能省,否則不生成文件
result_sheet._save()
初始文件格式
最終結(jié)果,處理完成
求行和和求列合
#銷售明細(xì)
df1 = pd.read_excel(filePath1, sheet_name='銷售明細(xì)')
index_list = ['部門名稱', '年度名稱', '季節(jié)名稱', '商品代碼', '商品名稱', '品牌名稱', '品類名稱', '顏色名稱']
# 求和方法二,需將文本的列指定為索引
df1 = df1.set_index(index_list)
#df1.loc["按列求和"] = df1.apply(lambda x: x.sum())
df1['合計(jì)'] = df1.apply(lambda x: x.sum(), axis=1)
#求列合
df1 = df1.reset_index()
df1 = df1.set_index('部門名稱')
df1.loc['合計(jì)'] = df1.apply(lambda x: x.sum(), axis=0)
#重置索引,防止單元格合并
df1 = df1.reset_index()
df1.to_excel("new_sheet1.xlsx", sheet_name="new_sheet", index=False, na_rep=0, inf_rep=0)
4格式處理
通過openpyxl進(jìn)行格式處理
#銷售明細(xì)
# 加載工作簿
wb1 = load_workbook('Mytest.xlsx')
# 獲取sheet頁
ws2 = wb1['銷售明細(xì)']
#獲取行
for cell in ws1['1']:
#代碼省略
#獲取列
for cell in ws1['A']:
#代碼省略
字體示例
from openpyxl import Workbook
from openpyxl.styles import Font
# 創(chuàng)建一個(gè)新的工作簿和工作表
workbook = Workbook()
sheet = workbook.active
# 創(chuàng)建一個(gè)字體對(duì)象并設(shè)置屬性
font = Font(
name='Arial', # 字體名稱
size=12, # 字體大小
bold=True, # 是否加粗
italic=True, # 是否斜體
underline='single', # 下劃線類型:single、double、none等
strike=True, # 是否有刪除線
color='FF0000' # 字體顏色,十六進(jìn)制RGB值
)
# 在單元格A1中應(yīng)用字體樣式
sheet['A1'].font = font
sheet['A1'].value = 'Hello, World!'
# 保存工作簿
workbook.save('E:\\UserData\\Desktop\\font_example.xlsx')
背景邊框示例
# 銷售明細(xì)
# 加載工作簿
wb1 = load_workbook(filePath2)
# 獲取sheet頁
ws1 = wb1['銷售明細(xì)']
#設(shè)置字體
# 創(chuàng)建一個(gè)字體對(duì)象并設(shè)置屬性
font = Font(
name='微軟雅黑', # 字體名稱
size=18, # 字體大小
bold=True, # 是否加粗
italic=False, # 是否斜體
underline='none', # 下劃線類型:single、double、none等
strike=False, # 是否有刪除線
color='000000', # 字體顏色,十六進(jìn)制RGB值
vertAlign='baseline'
)
dept_name = ws1['A2'].value
ws1.insert_rows(0, 1) #插入一行
min_row = ws1.min_row
max_row = ws1.max_row
min_col = ws1.min_column
max_col = ws1.max_column
#設(shè)置單元格格式
# 調(diào)整行高
ws1.row_dimensions[1].height = 24
#合并單元格
# 需要合并的左上方和右下方單元格坐標(biāo)
ws1.merge_cells(start_row=1, start_column=1, end_row=1, end_column=max_col)
# 在單元格A1中應(yīng)用字體樣式
ws1['A1'].font = font
ws1['A1'].value = dept_name + '銷售明細(xì)'
#設(shè)置字體居中
# 設(shè)置字體居中
#要導(dǎo)入 from openpyxl import styles
cell = ws1['A1']
cell.alignment = styles.Alignment(horizontal='center', vertical='center')
#首行設(shè)置底色
# 設(shè)置第一行單元格的背景顏色為紅色
#from openpyxl.styles import PatternFill
for cell in ws[1]:
cell.fill = PatternFill(start_color="FF0000", end_color="FF0000", fill_type="solid")
# 保存工作簿
wb1.save(filePath2)
將數(shù)字轉(zhuǎn)換為excel的列序號(hào)
import string
def number_to_column(n):
"""Convert a number to the corresponding column letter in Excel"""
column = ""
while n > 0:
n -= 1
column = string.ascii_uppercase[n % 26] + column
n //= 26
return column
# Example usage
print(number_to_column(1)) # Output: "A"
print(number_to_column(27)) # Output: "AA"
print(number_to_column(28)) # Output: "AB"
print(number_to_column(53)) # Output: "BA"
print(number_to_column(1000)) # Output: "ALL"
設(shè)置銷售明細(xì)的代碼
# 銷售明細(xì)
# 加載工作簿
wb1 = load_workbook(filePath2)
# 獲取sheet頁
ws1 = wb1['銷售明細(xì)']
# 設(shè)置字體
# 創(chuàng)建一個(gè)字體對(duì)象并設(shè)置屬性
font1 = Font(
name='微軟雅黑', # 字體名稱
size=18, # 字體大小
bold=True, # 是否加粗
italic=False, # 是否斜體
underline='none', # 下劃線類型:single、double、none等
strike=False, # 是否有刪除線
color='000000', # 字體顏色,十六進(jìn)制RGB值
vertAlign='baseline'
)
dept_name = ws1['A2'].value
ws1.insert_rows(0, 1) # 插入一行
min_row = ws1.min_row
max_row = ws1.max_row
min_col = ws1.min_column
max_col = ws1.max_column
# 設(shè)置單元格格式
# 調(diào)整行高
ws1.row_dimensions[1].height = 24
# 合并單元格
# 需要合并的左上方和右下方單元格坐標(biāo)
ws1.merge_cells(start_row=1, start_column=1, end_row=1, end_column=max_col)
# 在單元格A1中應(yīng)用字體樣式
ws1['A1'].font = font1
ws1['A1'].value = dept_name + '銷售明細(xì)'
# 設(shè)置字體居中
cell = ws1['A1']
cell.alignment = styles.Alignment(horizontal='center', vertical='center')
# 首行設(shè)置底色
# 設(shè)置第一行單元格的背景顏色為黃色
for cell in ws1[2]:
cell.fill = PatternFill(start_color="FFFF00", end_color="FF0000", fill_type="solid")
#列顏色填充
for cell in ws1[number_to_column(max_col)]:
cell.fill = PatternFill(start_color="FFFF00", end_color="FF0000", fill_type="solid")
#設(shè)置邊框
cell.border = Border(left=Side(style='thin'), bottom=Side(style='thin'), right=Side(style='thin'), top=Side(style='thin'))
#處理最后一行
# 調(diào)整行高
ws1.row_dimensions[max_row].height = 24
# 設(shè)置末尾行單元格的背景顏色為黃色
for cell in ws1[max_row]:
cell.fill = PatternFill(start_color="FFFF00", end_color="FF0000", fill_type="solid")
# 設(shè)置邊框
cell.border = Border(left=Side(style='thin'), bottom=Side(style='thin'), right=Side(style='thin'),top=Side(style='thin'))
# 合并單元格
# 需要合并的左上方和右下方單元格坐標(biāo)
ws1.merge_cells(start_row=max_row, start_column=1, end_row=max_row, end_column=8)
# 在單元格A1中應(yīng)用字體樣式
cell = ws1.cell(column=1, row=max_row)
cell.alignment = styles.Alignment(horizontal='center', vertical='center')
cell.font = font1
cell.value = '合計(jì)'
單款排名格式
#單款排名
# 獲取sheet頁
ws2 = wb1['單款排名']
# 設(shè)置字體
# 創(chuàng)建一個(gè)字體對(duì)象并設(shè)置屬性
dept_name = ws2['A2'].value
ws2.insert_rows(0, 1) # 插入一行
min_row = ws2.min_row
max_row = ws2.max_row
min_col = ws2.min_column
max_col = ws2.max_column
# 設(shè)置單元格格式
# 調(diào)整行高
ws2.row_dimensions[1].height = 24
# 合并單元格
# 需要合并的左上方和右下方單元格坐標(biāo)
ws2.merge_cells(start_row=1, start_column=1, end_row=1, end_column=max_col)
# 在單元格A1中應(yīng)用字體樣式
ws2['A1'].font = font1
ws2['A1'].value = '單款排名'
# 設(shè)置字體居中
cell = ws2['A1']
cell.alignment = styles.Alignment(horizontal='center', vertical='center')
# 首行設(shè)置底色
# 設(shè)置第一行單元格的背景顏色為黃色
for cell in ws2[2]:
cell.fill = PatternFill(start_color="FFFF00", end_color="FF0000", fill_type="solid")
# 列顏色填充
for cell in ws2[number_to_column(max_col)]:
cell.fill = PatternFill(start_color="FFFF00", end_color="FF0000", fill_type="solid")
# 設(shè)置邊框
cell.border = Border(left=Side(style='thin'), bottom=Side(style='thin'), right=Side(style='thin'),
top=Side(style='thin'))
# 處理最后一行
# 調(diào)整行高
ws2.row_dimensions[max_row ].height = 24
# 設(shè)置末尾行單元格的背景顏色為黃色
for cell in ws2[max_row ]:
cell.fill = PatternFill(start_color="FFFF00", end_color="FF0000", fill_type="solid")
# 設(shè)置邊框
cell.border = Border(left=Side(style='thin'), bottom=Side(style='thin'), right=Side(style='thin'),
top=Side(style='thin'))
# 合并單元格
# 需要合并的左上方和右下方單元格坐標(biāo)
ws2.merge_cells(start_row=max_row, start_column=1, end_row=max_row , end_column=6)
# 在單元格A1中應(yīng)用字體樣式
cell = ws2.cell(column=1, row=max_row)
cell.alignment = styles.Alignment(horizontal='center', vertical='center')
cell.font = font1
cell.value = '合計(jì)'
完整代碼
from openpyxl import load_workbook
from openpyxl import styles
from openpyxl.styles import *
import pandas as pd
from openpyxl.styles import Font
import string
def print_hi(name):
# Use a breakpoint in the code line below to debug your script.
print(f'Hi, {name}') # Press Ctrl+F8 to toggle the breakpoint.
def number_to_column(n):
"""Convert a number to the corresponding column letter in Excel"""
column = ""
while n > 0:
n -= 1
column = string.ascii_uppercase[n % 26] + column
n //= 26
return column
# Press the green button in the gutter to run the script.
if __name__ == '__main__':
filePath1 = './src/原始數(shù)據(jù)精修.xlsx'
# 加載工作簿
wb = load_workbook(filePath1)
# 獲取sheet頁,修改第一個(gè)sheet頁面為
name1 = wb.sheetnames[0]
ws1 = wb[name1]
ws1.title = "銷售明細(xì)"
wb.save(filePath1)
#銷售明細(xì)
df0 = pd.read_excel(filePath1, sheet_name='銷售明細(xì)')
index_list = ['部門名稱', '年度名稱', '季節(jié)名稱', '商品代碼', '商品名稱', '品牌名稱', '品類名稱', '顏色名稱']
# 求和方法二,需將文本的列指定為索引
df0 = df0.set_index(index_list)
#df1.loc["按列求和"] = df1.apply(lambda x: x.sum())
df0['合計(jì)'] = df0.apply(lambda x: x.sum(), axis=1)
#df1=df1.sum()
filePath2 = './src/處理結(jié)果精修.xlsx'
#重置索引,防止單元格合并
df0 = df0.reset_index()
df1 = df0.copy()
# 列求和
df1 = df1.set_index('部門名稱')
df1.loc['合計(jì)'] = df1.apply(lambda x: x.sum(), axis=0)
# df1=df1.sum()
filePath2 = './src/處理結(jié)果精修.xlsx'
# 重置索引,防止單元格合并
df1 = df1.reset_index()
df1.to_excel("new_sheet1.xlsx", sheet_name="new_sheet", index=False, na_rep=0, inf_rep=0)
#單款排名
#去除年度和季節(jié)進(jìn)行聚類
df2 = df0.copy()
df2.pop('年度名稱')
df2.pop('季節(jié)名稱')
index_list = ['部門名稱', '商品代碼', '商品名稱', '品牌名稱', '品類名稱', '顏色名稱']
value_list = ['0M','1L','1XL','27','28','29','2XL','30','3XL','4XL','5XL','6XL','S','均','合計(jì)']
#使用透視表聚合
df2 = df2.pivot_table(index= index_list,values=value_list,aggfunc='sum')
# 重置索引,防止單元格合并
df2 = df2.reset_index()
#將合計(jì)列放到最后面
#dataframe中某一列放到最后,并改名為銷售明細(xì)
df2['銷售明細(xì)'] = df2.pop('合計(jì)')
df2.sort_values(by="銷售明細(xì)", axis=0, ascending=False, inplace=True)
#列求和
df2 = df2.set_index('部門名稱')
df2.loc['合計(jì)'] = df1.apply(lambda x: x.sum(), axis=0)
# 重置索引,防止索引列消失
df2 = df2.reset_index()
#品牌排名
df3 = df0.copy()
# 使用透視表聚合
df3 = df3.pivot_table(index='品牌名稱', values='合計(jì)', aggfunc='sum')
# 重置索引,防止單元格合并
df3 = df3.reset_index()
# 將合計(jì)列放到最后面
# dataframe中某一列放到最后,并改名為銷售明細(xì)
df3['銷售明細(xì)'] = df3.pop('合計(jì)')
df3.sort_values(by="銷售明細(xì)", axis=0, ascending=False, inplace=True)
df3 = df3.set_index('品牌名稱')
df3.loc['合計(jì)'] = df3.apply(lambda x: x.sum(), axis=0)
# 重置索引,防止單元格合并
df3 = df3.reset_index()
#年度銷售
df4 = df0.copy()
# 使用透視表聚合
print(df4)
df4 = df4.pivot_table(index=['年度名稱', '季節(jié)名稱'], values='合計(jì)', aggfunc='sum')
# 重置索引,防止單元格合并
df4 = df4.reset_index()
# 將合計(jì)列放到最后面
# dataframe中某一列放到最后,并改名為銷售明細(xì)
df4['銷售明細(xì)'] = df4.pop('合計(jì)')
df4.sort_values(by="銷售明細(xì)", axis=0, ascending=False, inplace=True)
df4 = df4.set_index('年度名稱')
df4.loc['合計(jì)'] = df4.apply(lambda x: x.sum(), axis=0)
# 重置索引,防止單元格合并
df4 = df4.reset_index()
#季節(jié)銷售
df5 = df0.copy()
#使用透視表聚合
df5 = df5.pivot_table(index=['季節(jié)名稱'], values='合計(jì)', aggfunc='sum')
# 重置索引,防止單元格合并
df5 = df5.reset_index()
df5['銷售明細(xì)'] = df5.pop('合計(jì)')
df5.sort_values(by="銷售明細(xì)", axis=0, ascending=False, inplace=True)
df5 = df5.set_index('季節(jié)名稱')
df5.loc['合計(jì)'] = df5.apply(lambda x: x.sum(), axis=0)
# 重置索引,防止單元格合并
df5 = df5.reset_index()
#品類排名
df6 = df0.copy()
# 使用透視表聚合
df6 = df6.pivot_table(index=['品類名稱'], values='合計(jì)', aggfunc='sum')
# 重置索引,防止單元格合并
df6 = df6.reset_index()
df6['銷售明細(xì)'] = df6.pop('合計(jì)')
df6.sort_values(by="銷售明細(xì)", axis=0, ascending=False, inplace=True)
df6 = df6.set_index('品類名稱')
df6.loc['合計(jì)'] = df6.apply(lambda x: x.sum(), axis=0)
# 重置索引,防止單元格合并
df6 = df6.reset_index()
# print(df1)
# 加載工作簿
filePath2 = './src/處理結(jié)果精修.xlsx'
wb = load_workbook(filePath2)
#客戶周銷
df7 = pd.DataFrame({'商店名稱':[], '銷售數(shù)量':[]})
#創(chuàng)建表
ws2 = wb.create_sheet("單款排名")
ws3 = wb.create_sheet("品牌排名")
ws4 = wb.create_sheet("年度銷售")
ws5 = wb.create_sheet("季節(jié)銷售")
ws6 = wb.create_sheet("品類排名")
ws7 = wb.create_sheet("客戶周銷")
wb.save(filePath2)
#將生成的工作表導(dǎo)入到程序中
result_sheet = pd.ExcelWriter(filePath2, engine='openpyxl') # 先定義要存入的文件名xxx,然后分別存入xxx下不同的sheet
df1.to_excel(result_sheet, "銷售明細(xì)", index=False, na_rep=0, inf_rep=0)
df2.to_excel(result_sheet, "單款排名", index=False, na_rep=0, inf_rep=0)
df3.to_excel(result_sheet, "品牌排名", index=False, na_rep=0, inf_rep=0)
df4.to_excel(result_sheet, "年度銷售", index=False, na_rep=0, inf_rep=0)
df5.to_excel(result_sheet, "季節(jié)銷售", index=False, na_rep=0, inf_rep=0)
df6.to_excel(result_sheet, "品類排名", index=False, na_rep=0, inf_rep=0)
df7.to_excel(result_sheet, "客戶周銷", index=False, na_rep=0, inf_rep=0)
# 這步不能省,否則不生成文件
result_sheet._save()
# 銷售明細(xì)
# 加載工作簿
wb1 = load_workbook(filePath2)
# 獲取sheet頁
ws1 = wb1['銷售明細(xì)']
# 設(shè)置字體
# 創(chuàng)建一個(gè)字體對(duì)象并設(shè)置屬性
font1 = Font(
name='微軟雅黑', # 字體名稱
size=18, # 字體大小
bold=True, # 是否加粗
italic=False, # 是否斜體
underline='none', # 下劃線類型:single、double、none等
strike=False, # 是否有刪除線
color='000000', # 字體顏色,十六進(jìn)制RGB值
vertAlign='baseline'
)
dept_name = ws1['A2'].value
ws1.insert_rows(0, 1) # 插入一行
min_row = ws1.min_row
max_row = ws1.max_row
min_col = ws1.min_column
max_col = ws1.max_column
# 設(shè)置單元格格式
# 調(diào)整行高
ws1.row_dimensions[1].height = 24
# 合并單元格
# 需要合并的左上方和右下方單元格坐標(biāo)
ws1.merge_cells(start_row=1, start_column=1, end_row=1, end_column=max_col)
# 在單元格A1中應(yīng)用字體樣式
ws1['A1'].font = font1
ws1['A1'].value = dept_name + '銷售明細(xì)'
# 設(shè)置字體居中
cell = ws1['A1']
cell.alignment = styles.Alignment(horizontal='center', vertical='center')
# 首行設(shè)置底色
# 設(shè)置第一行單元格的背景顏色為黃色
for cell in ws1[2]:
cell.fill = PatternFill(start_color="FFFF00", end_color="FF0000", fill_type="solid")
#列顏色填充
for cell in ws1[number_to_column(max_col)]:
cell.fill = PatternFill(start_color="FFFF00", end_color="FF0000", fill_type="solid")
#設(shè)置邊框
cell.border = Border(left=Side(style='thin'), bottom=Side(style='thin'), right=Side(style='thin'), top=Side(style='thin'))
#處理最后一行
# 調(diào)整行高
ws1.row_dimensions[max_row].height = 24
# 設(shè)置末尾行單元格的背景顏色為黃色
for cell in ws1[max_row]:
cell.fill = PatternFill(start_color="FFFF00", end_color="FF0000", fill_type="solid")
# 設(shè)置邊框
cell.border = Border(left=Side(style='thin'), bottom=Side(style='thin'), right=Side(style='thin'),top=Side(style='thin'))
# 合并單元格
# 需要合并的左上方和右下方單元格坐標(biāo)
ws1.merge_cells(start_row=max_row, start_column=1, end_row=max_row, end_column=8)
# 在單元格A1中應(yīng)用字體樣式
cell = ws1.cell(column=1, row=max_row)
cell.alignment = styles.Alignment(horizontal='center', vertical='center')
cell.font = font1
cell.value = '合計(jì)'
#單款排名
# 獲取sheet頁
ws2 = wb1['單款排名']
# 設(shè)置字體
# 創(chuàng)建一個(gè)字體對(duì)象并設(shè)置屬性
dept_name = ws2['A2'].value
ws2.insert_rows(0, 1) # 插入一行
min_row = ws2.min_row
max_row = ws2.max_row
min_col = ws2.min_column
max_col = ws2.max_column
# 設(shè)置單元格格式
# 調(diào)整行高
ws2.row_dimensions[1].height = 24
# 合并單元格
# 需要合并的左上方和右下方單元格坐標(biāo)
ws2.merge_cells(start_row=1, start_column=1, end_row=1, end_column=max_col)
# 在單元格A1中應(yīng)用字體樣式
ws2['A1'].font = font1
ws2['A1'].value = '單款排名'
# 設(shè)置字體居中
cell = ws2['A1']
cell.alignment = styles.Alignment(horizontal='center', vertical='center')
# 首行設(shè)置底色
# 設(shè)置第一行單元格的背景顏色為黃色
for cell in ws2[2]:
cell.fill = PatternFill(start_color="FFFF00", end_color="FF0000", fill_type="solid")
# 列顏色填充
for cell in ws2[number_to_column(max_col)]:
cell.fill = PatternFill(start_color="FFFF00", end_color="FF0000", fill_type="solid")
# 設(shè)置邊框
cell.border = Border(left=Side(style='thin'), bottom=Side(style='thin'), right=Side(style='thin'),
top=Side(style='thin'))
# 處理最后一行
# 調(diào)整行高
ws2.row_dimensions[max_row ].height = 24
# 設(shè)置末尾行單元格的背景顏色為黃色
for cell in ws2[max_row ]:
cell.fill = PatternFill(start_color="FFFF00", end_color="FF0000", fill_type="solid")
# 設(shè)置邊框
cell.border = Border(left=Side(style='thin'), bottom=Side(style='thin'), right=Side(style='thin'),
top=Side(style='thin'))
# 合并單元格
# 需要合并的左上方和右下方單元格坐標(biāo)
ws2.merge_cells(start_row=max_row, start_column=1, end_row=max_row , end_column=6)
# 在單元格A1中應(yīng)用字體樣式
cell = ws2.cell(column=1, row=max_row)
cell.alignment = styles.Alignment(horizontal='center', vertical='center')
cell.font = font1
cell.value = '合計(jì)'
# 保存工作簿
wb1.save(filePath2)
柚子快報(bào)邀請(qǐng)碼778899分享:貨物數(shù)據(jù)處理pandas版
相關(guān)鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。