用python将新建的df按两列分组,两个列名分别为表名和sheeet名,把分组后的df按顺序输出到已有excel中的倒数第二个sheet,表头填充为浅蓝色,全表加边框,居中,不用.book
时间: 2024-05-12 15:17:10 浏览: 99
详解python里使用正则表达式的分组命名方式
好的,这是一个关于Python的问题。要解决这个问题,你需要使用Pandas和Openpyxl这两个库。首先,你需要读取你已有的Excel文件,然后将其转换成一个可以进行编辑的Pandas DataFrame。接下来,你需要对DataFrame进行按两列分组的操作,然后将结果输出到Excel文件中,使用颜色、边框和居中等样式进行美化。
下面是一个参考代码,可以帮助你完成这个任务:
```python
import pandas as pd
from openpyxl import load_workbook
from openpyxl.styles import Font, PatternFill, Border, Side, Alignment
# 读取已有Excel文件并转换成DataFrame
workbook = load_workbook(filename='existing_file.xlsx')
sheet = workbook.active
data = sheet.values
columns = next(data)
df = pd.DataFrame(data, columns=columns)
# 按两列分组
grouped = df.groupby(['表名', 'sheet名']).apply(lambda x: x.reset_index(drop=True))
# 打开Excel文件并将分组后的数据写入到倒数第二个sheet
with pd.ExcelWriter('existing_file.xlsx', engine='openpyxl', mode='a') as writer:
writer.book = workbook
writer.sheets = dict((ws.title, ws) for ws in writer.book.worksheets)
grouped.to_excel(writer, sheet_name='sheet_name', index=False, startrow=1, startcol=0, header=False)
# 填充表头颜色
header_fill = PatternFill(start_color='B7C2D2', end_color='B7C2D2', fill_type='solid')
for cell in sheet[1]:
cell.fill = header_fill
# 设置边框和样式
thin = Side(border_style='thin', color='000000')
border = Border(left=thin, right=thin, top=thin, bottom=thin)
for row in sheet['A1:C{}'.format(len(grouped)+1)]:
for cell in row:
cell.border = border
cell.alignment = Alignment(horizontal='center', vertical='center')
# 关闭Excel文件
workbook.save('existing_file.xlsx')
```
请注意,此代码仅供参考。需要根据你的具体情况进行修改。如果遇到困难或问题,请随时提出来。
阅读全文