下面我来讲解一下“Python保留格式汇总各部门Excel内容的实现思路”的完整实例教程。
一、需求分析
我们需要实现一个Python程序,该程序可以自动批量提取各部门的Excel表格内容,并将内容汇总到一个新的Excel表格中,同时保留原有表格的格式和样式。
二、实现过程
1. 首先安装所需的Python模块
在终端中输入以下命令进行安装:
pip install pandas openpyxl xlrd xlwt xlutils
2. 编写Python程序
2.1 读取各部门Excel表格内容
使用pandas模块的read_excel()函数读取各部门Excel表格内容,代码示例如下:
import pandas as pd
# 读取各部门Excel表格内容
dept1_df = pd.read_excel("dept1.xlsx")
dept2_df = pd.read_excel("dept2.xlsx")
dept3_df = pd.read_excel("dept3.xlsx")
2.2 在新的Excel表格中汇总内容
使用pandas模块的concat()函数将各部门Excel表格内容汇总到一个新的Excel表格中,代码示例如下:
import pandas as pd
# 读取各部门Excel表格内容
dept1_df = pd.read_excel("dept1.xlsx")
dept2_df = pd.read_excel("dept2.xlsx")
dept3_df = pd.read_excel("dept3.xlsx")
# 将各部门Excel表格内容汇总到一个新的Excel表格中
sum_df = pd.concat([dept1_df, dept2_df, dept3_df])
2.3 保留原有表格的格式和样式
使用openpyxl模块读取新的Excel表格,并将各部门Excel表格内容的格式和样式复制到新的Excel表格中,代码示例如下:
import pandas as pd
from openpyxl import load_workbook
from openpyxl.utils.dataframe import dataframe_to_rows
# 读取各部门Excel表格内容
dept1_df = pd.read_excel("dept1.xlsx")
dept2_df = pd.read_excel("dept2.xlsx")
dept3_df = pd.read_excel("dept3.xlsx")
# 将各部门Excel表格内容汇总到一个新的Excel表格中
sum_df = pd.concat([dept1_df, dept2_df, dept3_df])
# 将新Excel表格中的数据复制到原有Excel表格的样式和格式中
book = load_workbook("new.xlsx")
writer = pd.ExcelWriter("new.xlsx", engine='openpyxl')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
sum_df.to_excel(writer, index=False, header=False, startrow=writer.sheets['Sheet1'].max_row)
for row in dataframe_to_rows(sum_df, index=False, header=False):
writer.sheets['Sheet1'].append(row)
writer.save()
其中,new.xlsx是新的Excel表格文件名,Sheet1是新Excel表格中的Sheet名称。
3. 运行Python程序
在终端中输入以下命令运行Python程序:
python excel.py
运行完成后,在new.xlsx文件中即可看到各部门Excel表格内容的汇总,并且保留了原有表格的格式和样式。
三、示例说明
示例1
例如,我们有3个部门A、B、C,他们分别有自己的Excel表格a.xlsx、b.xlsx、c.xlsx。我们想将这些Excel表格内容汇总到一个新的Excel表格new.xlsx中,并且保留原有表格的格式和样式。
在终端中,我们运行excel.py文件,即可实现将各部门Excel表格内容汇总到一个新的Excel表格中,并保留原有表格的格式和样式。
示例2
另一个例子是,如果我们在新Excel表格中想要添加一行合计数据,可以在sum_df中加入新的一行,代码示例如下:
import pandas as pd
from openpyxl import load_workbook
from openpyxl.utils.dataframe import dataframe_to_rows
# 读取各部门Excel表格内容
dept1_df = pd.read_excel("dept1.xlsx")
dept2_df = pd.read_excel("dept2.xlsx")
dept3_df = pd.read_excel("dept3.xlsx")
# 将各部门Excel表格内容汇总到一个新的Excel表格中
sum_df = pd.concat([dept1_df, dept2_df, dept3_df])
# 添加合计
sum_df.loc[len(sum_df)] = sum_df.sum()
# 将新Excel表格中的数据复制到原有Excel表格的样式和格式中
book = load_workbook("new.xlsx")
writer = pd.ExcelWriter("new.xlsx", engine='openpyxl')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
sum_df.to_excel(writer, index=False, header=False, startrow=writer.sheets['Sheet1'].max_row)
for row in dataframe_to_rows(sum_df, index=False, header=False):
writer.sheets['Sheet1'].append(row)
writer.save()
在运行后可以在新的Excel表格中看到添加了一行合计数据。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python保留格式汇总各部门excel内容的实现思路 - Python技术站