每天都要使用相同的Excel汇总各各部门的数据,请各位大咖帮写一段Python代码汇总数据。
(本人只会把代码复制进去,粘贴然后运行,啧啧)
参考:https://blog.csdn.net/Deng333333555/article/details/126970817
应该比较好实现,但不确定你具体样子以及是不是就三个部门,建议你可以把示例的 4个文件搞到百度网盘发上来,好让大家确定你要搞成什么样子
根据你的要求,只需要根据汇总表中配合部门分别去读取部门excel文件,然后将部门的完成情况和时间合并到汇总表最后两列即可。可以使用操作excel的python库pandas、xlwings或者openpyxl实现,这些库都可以实现对excel文件的读写功能。可将数据文件发出来。
难点不是内容的构造方面,而是在于表格的定位和表格合并,如何准确填到对应位置,不太好写代码自动化完成,手动反而更加简单并且不容易出错
假设你需要汇总的数据是一个Excel文件,其中包含多个工作表,每个工作表对应一个部门的数据。每个工作表包含以下列:重点工作计划、完成情况、序号、工作举措、工作任务、具体内容、完成标志/完成时限、配合部门(单位)、完成情况、完成时间。
以下是一个Python示例代码,可以读取Excel文件并汇总每个部门的数据:
import pandas as pd
# 读取Excel文件
excel_file = pd.ExcelFile('your_file_path.xlsx')
# 遍历每个工作表,汇总数据
for sheet_name in excel_file.sheet_names:
sheet_data = excel_file.parse(sheet_name)
department_name = sheet_data.columns[0] # 第一列为部门名称
department_data = sheet_data.iloc[2:, :] # 从第三行开始为数据
# 汇总数据
summary_data = department_data.groupby(['工作任务'])['完成情况'].apply(list).reset_index(name='完成情况列表')
# 将汇总数据写入新的Excel文件
writer = pd.ExcelWriter(f'{department_name}.xlsx')
summary_data这段代码读取了Excel文件并遍历每个工作表,对每个部门的数据进行了汇总。具体实现步骤如下:
1. 使用pandas库中的ExcelFile()函数读取Excel文件。
2. 遍历每个工作表,使用parse()函数读取工作表的数据。
3. 获取部门名称和数据,其中部门名称为第一列,从第三行开始为数据,使用iloc函数进行切片。
4. 对数据进行汇总,使用groupby()函数按照“工作任务”列进行分组,将“完成情况”列的值合并为列表,并重命名为“完成情况列表”。
5. 将汇总数据写入新的Excel文件,使用ExcelWriter()函数创建一个新的Excel文件,将汇总数据写入并保存。
需要注意的是,这段代码仅仅是一个示例,实际应用中需要根据具体的数据格式和需求进行修改和完善。
可以借鉴下
def append(path):
filename_excel = []
frames = []
for root, dirs, files in os.walk(path):
for file in files:
file_with_path = os.path.join(root, file)
filename_excel.append(file_with_path)
df = pd.read_excel(file_with_path, engine='openpyxl')
# 将文件名中包含的日期信息写入dataframe
df["日期"] = pd.to_datetime(file.strip('.xls')[-1:])#日期在什么位置需要自己调整
frames.append(df)
df = pd.concat(frames, axis=0)
return df
def combine(path):
with pd.ExcelWriter("合并的excel.xlsx") as writer:
for root, dirs, files in os.walk(path):
for file in files:
filename = os.path.join(root, file)
df = pd.read_excel(filename, engine='openpyxl')
df.to_excel(writer, sheet_name=file.strip('.xls')) #删除文件名的后缀,有时候是.csv/.xlsx
return df
下面是实现Excel合并的python代码
import pandas as pd
import os
# 设置要读取的Excel文件夹路径和指定单元格位置,可以根据实际情况修改
excel_dir = 'excel_data'
value_range = 'D4'
# 获取Excel文件夹中所有.xlsx文件
excel_files = []
for root, dirs, files in os.walk(excel_dir):
for file in files:
if file.endswith('.xlsx'):
excel_files.append(os.path.join(root, file))
# 将所有Excel文件的指定单元格数据汇总到DataFrame中
df_total = pd.DataFrame()
for excel_file in excel_files:
df = pd.read_excel(excel_file, usecols=[value_range])
df_total = df_total.append(df, ignore_index=True)
# 将汇总的数据保存到结果Excel文件中
writer = pd.ExcelWriter(os.path.join(excel_dir, 'result.xlsx'))
df_total.to_excel(writer, index=False)
writer.save()
可以参考下我得步骤
需要用到的库
import pandas as pd
import os
定义一个函数
def append(path): #path:所有需要合并的excel文件所在的文件夹
filename_excel = [] # 建立一个空list,用于储存所有需要合并的excel名称
frames = [] # 建立一个空list,用于储存dataframe
for root, dirs, files in os.walk(path):
for file in files:
file_with_path = os.path.join(root, file)
filename_excel.append(file_with_path)
df = pd.read_excel(file_with_path, engine='openpyxl')
frames.append(df)
df = pd.concat(frames, axis=0)
return df
def append(path): #path:所有需要合并的excel文件所在的文件夹
filename_excel = [] # 建立一个空list,用于储存所有需要合并的excel名称
frames = [] # 建立一个空list,用于储存dataframe
for root, dirs, files in os.walk(path):
for file in files:
file_with_path = os.path.join(root, file)
filename_excel.append(file_with_path)
df = pd.read_excel(file_with_path, engine='openpyxl')
frames.append(df)
df = pd.concat(frames, axis=0)
return df
如果excel的文件名包括日期,且需要写到最后汇总的excel中
def append(path):
filename_excel = []
frames = []
for root, dirs, files in os.walk(path):
for file in files:
file_with_path = os.path.join(root, file)
filename_excel.append(file_with_path)
df = pd.read_excel(file_with_path, engine='openpyxl')
# 将文件名中包含的日期信息写入dataframe
df["日期"] = pd.to_datetime(file.strip('.xls')[-1:])#日期在什么位置需要自己调整
frames.append(df)
df = pd.concat(frames, axis=0)
return df
如果将多个excel合并到一个excel中,sheet命名为excel的名字
def combine(path):
with pd.ExcelWriter("合并的excel.xlsx") as writer:
for root, dirs, files in os.walk(path):
for file in files:
filename = os.path.join(root, file)
df = pd.read_excel(filename, engine='openpyxl')
df.to_excel(writer, sheet_name=file.strip('.xls')) #删除文件名的后缀,有时候是.csv/.xlsx
return df
要求可否具体点
该回答引用GPT与博主@晓码自在合作编写:
Excel 表格合并可以使用openpyxl库实现。具体步骤如下:
安装openpyxl库,使用pip install openpyxl
读取Excel文件,获取Worksheet对象
python
import openpyxl
wb = openpyxl.load_workbook('yourfile.xlsx')
sheet = wb['Sheet1'] # choose the sheet
python
c1 = 'A1:C3' # 示例合并A1至C3区域
python
sheet.merge_cells(c1)
python
wb.save('yourfile.xlsx')
完整示例代码:
python
import openpyxl
wb = openpyxl.load_workbook('yourfile.xlsx')
sheet = wb['Sheet1']
c1 = 'A1:C3'
sheet.merge_cells(c1)
wb.save('yourfile.xlsx')
这个示例会合并yourfile.xlsx文件Sheet1表格中的A1至C3单元格。
有几点需要注意:
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
首先,你需要安装pandas模块和openpyxl模块,可以使用以下命令进行安装:
pip install pandas openpyxl
接下来,你需要准备一份模板Excel文件(例如命名为"template.xlsx"),文件中包含列名和表格格式。然后,你需要准备多个待汇总的Excel文件,每个文件包含各部门的数据。
下面是一份示例代码,可以自行修改参数和文件路径:
import pandas as pd
import os
# 定义模板文件路径和汇总文件路径
template_file = "template.xlsx"
output_file = "output.xlsx"
# 获取待汇总的文件列表
input_folder = "path/to/input/folder/"
input_files = [os.path.join(input_folder, file) for file in os.listdir(input_folder)]
# 读取模板文件和待汇总的文件
template_df = pd.read_excel(template_file)
input_dfs = [pd.read_excel(input_file) for input_file in input_files]
# 合并数据
merged_df = pd.concat(input_dfs, ignore_index=True)
# 写入汇总文件
with pd.ExcelWriter(output_file) as writer:
merged_df.to_excel(writer, index=False, sheet_name="Sheet1")
writer.save()
需要注意的是,上述代码假设每个待汇总的Excel文件中的数据格式和列名都与模板文件相同。如果不同,你需要对数据进行清洗和处理,确保格式和列名一致。
如果我的回答解决了您的问题,请采纳!