使用StyleFrame的to_excel方法将多个DataFrame写入Excel同一工作表
可以用StyleFrame实现多个DataFrame指定位置写入同一工作表
当然可以!StyleFrame的to_excel方法刚好支持通过start_row和start_col参数指定每个DataFrame写入Excel的起始单元格位置,完美匹配你要把不同行列数的df依次塞进同一张Sheet的需求。
结合你提到的格式设置操作,下面给你完整的实操示例:
步骤1:导入依赖库
import pandas as pd from StyleFrame import StyleFrame, Styler, utils
步骤2:模拟你的多个DataFrame(替换成你自己的df1、df2即可)
df1 = pd.DataFrame({'A列': [1, 2, 3], 'B列': [4, 5, 6]}) df2 = pd.DataFrame({'X列': [7, 8], 'Y列': [9, 10], 'Z列': [11, 12]}) df3 = pd.DataFrame({'P列': [13], 'Q列': [14], 'R列': [15], 'S列': [16]})
步骤3:初始化Writer+设置样式+指定位置写入
# 初始化ExcelWriter对象 writer = StyleFrame.ExcelWriter("多表格合并.xlsx") # 处理第一个表格:写入A1起始位置,同时设置样式 sf1 = StyleFrame(df1) sf1.apply_headers_style(Styler(bold=True, font_size=12, bg_color=utils.colors.light_blue)) sf1.apply_column_style(cols_to_style=['A列', 'B列'], styler=Styler(font_size=11)) sf1.to_excel(writer, sheet_name='Sheet1', start_row=0, start_col=0, index=False) # 处理第二个表格:从A5单元格开始(留一行空白分隔) sf2 = StyleFrame(df2) sf2.apply_headers_style(Styler(bold=True, font_size=12, bg_color=utils.colors.light_green)) sf2.apply_column_style(cols_to_style=['X列', 'Y列', 'Z列'], styler=Styler(font_size=11)) sf2.to_excel(writer, sheet_name='Sheet1', start_row=4, start_col=0, index=False) # 处理第三个表格:从D8单元格开始(横向也留空白) sf3 = StyleFrame(df3) sf3.apply_headers_style(Styler(bold=True, font_size=12, bg_color=utils.colors.light_orange)) sf3.apply_column_style(cols_to_style=['P列', 'Q列', 'R列', 'S列'], styler=Styler(font_size=11)) sf3.to_excel(writer, sheet_name='Sheet1', start_row=7, start_col=3, index=False)
步骤4:保存并关闭Writer
# 这步一定要做,不然Excel文件会损坏 writer.save() writer.close()
关键细节说明
start_row和start_col都是从0开始计数的,比如start_row=0, start_col=0对应Excel的A1单元格,start_row=4对应第5行(A5)。- 如果不想手动算位置,可以动态获取前一个表格的总行数(包含表头)来计算下一个起始位置,比如:
# 自动计算下一个表格的起始行(+1是留一行空白) next_start_row = sf1.shape[0] + 1 sf2.to_excel(writer, sheet_name='Sheet1', start_row=next_start_row, start_col=0, index=False)
这样就能精准控制每个表格在工作表中的位置,同时完美保留你需要的样式设置啦!
内容的提问来源于stack exchange,提问作者viks_python
相关产品推荐
相关产品推荐

