如果你对Python感兴趣的话,可以试试我整理的这一份全套的Python学习资料,【点击这里】免费领取!
安装 Pandas 和 openpyxl
首先,确保已经安装了 Pandas 和 openpyxl。可以通过 pip 安装:
pip install pandas openpyxl
创建 DataFrame
import pandas as pd
# 创建 DataFrame
df1 = pd.DataFrame({
'姓名': ['张三', '李四', '王五'],
'年龄': [25, 30, 35],
'城市': ['北京', '上海', '广州']
})
df2 = pd.DataFrame({
'姓名': ['赵六', '孙七', '周八'],
'年龄': [40, 45, 50],
'城市': ['深圳', '成都', '杭州']
})
print(df1)
print(df2)
使用 openpyxl 合并单元格
import pandas as pd
from openpyxl import Workbook
from openpyxl.utils.dataframe import dataframe_to_rows
# 创建 DataFrame
df1 = pd.DataFrame({
'姓名': ['张三', '李四', '王五'],
'年龄': [25, 30, 35],
'城市': ['北京', '上海', '广州']
})
# 创建一个新的工作簿
wb = Workbook()
ws = wb.active
# 将 DataFrame 写入工作表
for r_idx, row in enumerate(dataframe_to_rows(df1, index=False, header=True)):
for c_idx, value in enumerate(row, 1):
ws.cell(row=r_idx+1, column=c_idx, value=value)
# 合并单元格
ws.merge_cells('A1:B1') # 合并 A1 和 B1 单元格
# 保存 Excel 文件
wb.save('merged_cells.xlsx')
合并 DataFrame 到不同的工作表
import pandas as pd
# 创建 DataFrame
df1 = pd.DataFrame({
'姓名': ['张三', '李四', '王五'],
'年龄': [25, 30, 35],
'城市': ['北京', '上海', '广州']
})
df2 = pd.DataFrame({
'姓名': ['赵六', '孙七', '周八'],
'年龄': [40, 45, 50],
'城市': ['深圳', '成都', '杭州']
})
# 合并 DataFrame 到不同的工作表
with pd.ExcelWriter('combined_sheets.xlsx', engine='openpyxl') as writer:
df1.to_excel(writer, sheet_name='Sheet1', index=False)
df2.to_excel(writer, sheet_name='Sheet2', index=False)
合并多个 Excel 文件
import pandas as pd
# 读取多个 Excel 文件
files = ['file1.xlsx', 'file2.xlsx']
dfs = []
for file in files:
dfs.append(pd.read_excel(file))
# 合并所有 DataFrame
combined = pd.concat(dfs, ignore_index=True)
# 保存合并后的数据
combined.to_excel('combined_files.xlsx', index=False)
使用 openpyxl 合并单元格并保留数据
import pandas as pd
from openpyxl import Workbook
from openpyxl.utils.dataframe import dataframe_to_rows
# 创建 DataFrame
df1 = pd.DataFrame({
'姓名': ['张三', '李四', '王五'],
'年龄': [25, 30, 35],
'城市': ['北京', '上海', '广州']
})
# 创建一个新的工作簿
wb = Workbook()
ws = wb.active
# 将 DataFrame 写入工作表
for r_idx, row in enumerate(dataframe_to_rows(df1, index=False, header=True)):
for c_idx, value in enumerate(row, 1):
ws.cell(row=r_idx+1, column=c_idx, value=value)
# 合并单元格但保留数据
ws.merge_cells('A1:B1', start_row=1, start_column=1, end_row=1, end_column=2)
# 保存 Excel 文件
wb.save('merged_cells_with_data.xlsx')
合并多个 DataFrame 到不同工作表
import pandas as pd
from openpyxl import Workbook
from openpyxl.utils.dataframe import dataframe_to_rows
# 创建 DataFrame
df1 = pd.DataFrame({
'姓名': ['张三', '李四', '王五'],
'年龄': [25, 30, 35],
'城市': ['北京', '上海', '广州']
})
df2 = pd.DataFrame({
'姓名': ['赵六', '孙七', '周八'],
'年龄': [40, 45, 50],
'城市': ['深圳', '成都', '杭州']
})
# 创建一个新的工作簿
wb = Workbook()
# 添加不同的工作表
ws1 = wb.create_sheet(title='Sheet1')
ws2 = wb.create_sheet(title='Sheet2')
# 将 DataFrame 写入不同的工作表
for r_idx, row in enumerate(dataframe_to_rows(df1, index=False, header=True)):
for c_idx, value in enumerate(row, 1):
ws1.cell(row=r_idx+1, column=c_idx, value=value)
for r_idx, row in enumerate(dataframe_to_rows(df2, index=False, header=True)):
for c_idx, value in enumerate(row, 1):
ws2.cell(row=r_idx+1, column=c_idx, value=value)
# 保存 Excel 文件
wb.save('multiple_sheets.xlsx')
使用 openpyxl 合并单元格并设置样式
import pandas as pd
from openpyxl import Workbook
from openpyxl.utils.dataframe import dataframe_to_rows
from openpyxl.styles import Font, Alignment
# 创建 DataFrame
df1 = pd.DataFrame({
'姓名': ['张三', '李四', '王五'],
'年龄': [25, 30, 35],
'城市': ['北京', '上海', '广州']
})
# 创建一个新的工作簿
wb = Workbook()
ws = wb.active
# 设置字体样式
font_style = Font(bold=True, color="FF0000")
alignment = Alignment(horizontal="center", vertical="center")
# 将 DataFrame 写入工作表
for r_idx, row in enumerate(dataframe_to_rows(df1, index=False, header=True)):
for c_idx, value in enumerate(row, 1):
cell = ws.cell(row=r_idx+1, column=c_idx, value=value)
if r_idx == 0: # 如果是标题行,则设置样式
cell.font = font_style
cell.alignment = alignment
# 合并单元格并设置样式
ws.merge_cells('A1:B1', start_row=1, start_column=1, end_row=1, end_column=2)
ws['A1'].font = font_style
ws['A1'].alignment = alignment
# 保存 Excel 文件
wb.save('merged_cells_with_styles.xlsx')
合并多个 Excel 文件到一个工作簿的不同工作表
import pandas as pd
from openpyxl import Workbook
from openpyxl.utils.dataframe import dataframe_to_rows
# 读取多个 Excel 文件
files = ['file1.xlsx', 'file2.xlsx']
dfs = []
for file in files:
dfs.append(pd.read_excel(file))
# 创建一个新的工作簿
wb = Workbook()
# 添加不同的工作表并将数据写入
for idx, df in enumerate(dfs):
ws = wb.create_sheet(title=f'Sheet{idx+1}')
for r_idx, row in enumerate(dataframe_to_rows(df, index=False, header=True)):
for c_idx, value in enumerate(row, 1):
ws.cell(row=r_idx+1, column=c_idx, value=value)
# 保存 Excel 文件
wb.save('combined_files_multiple_sheets.xlsx')
使用 openpyxl 合并单元格并设置条件格式
import pandas as pd
from openpyxl import Workbook
from openpyxl.utils.dataframe import dataframe_to_rows
from openpyxl.styles import PatternFill, Font
from openpyxl.formatting.rule import CellIsRule
# 创建 DataFrame
df1 = pd.DataFrame({
'姓名': ['张三', '李四', '王五'],
'年龄': [25, 30, 35],
'城市': ['北京', '上海', '广州']
})
# 创建一个新的工作簿
wb = Workbook()
ws = wb.active
# 设置字体样式
font_style = Font(bold=True, color="FF0000")
fill_style = PatternFill(start_color="FFFF00", end_color="FFFF00", fill_type="solid")
# 将 DataFrame 写入工作表
for r_idx, row in enumerate(dataframe_to_rows(df1, index=False, header=True)):
for c_idx, value in enumerate(row, 1):
cell = ws.cell(row=r_idx+1, column=c_idx, value=value)
if r_idx == 0: # 如果是标题行,则设置样式
cell.font = font_style
# 合并单元格
ws.merge_cells('A1:B1', start_row=1, start_column=1, end_row=1, end_column=2)
# 设置条件格式
rule = CellIsRule(operator='equal', formula=['"北京"'], stopIfTrue=True, fill=fill_style)
ws.conditional_formatting.add('C1:C3', rule)
# 保存 Excel 文件
wb.save('merged_cells_with_conditional_formatting.xls)
合并 DataFrame 并去除重复数据
import pandas as pd
# 创建 DataFrame
df1 = pd.DataFrame({
'姓名': ['张三', '李四', '王五'],
'年龄': [25, 30, 35],
'城市': ['北京', '上海', '广州']
})
df2 = pd.DataFrame({
'姓名': ['赵六', '孙七', '周八'],
'年龄': [40, 45, 50],
'城市': ['深圳', '成都', '杭州']
})
# 合并 DataFrame
combined = pd.concat([df1, df2], ignore_index=True)
# 去除重复数据
unique_combined = combined.drop_duplicates()
# 保存合并后的数据
unique_combined.to_excel('unique_combined_files.xlsx', index=False)
文末福利
最后,想要学习Python并且达到能做副业、兼职接单、提升自己收入的小伙伴,可以试试我整理的这一份全套的Python学习资料,【点击这里】免费领取!
包括:Python激活码+安装包、Python
web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!
① Python所有方向的学习路线图,清楚各个方向要学什么东西
② 100多节Python课程视频,涵盖必备基础、爬虫和数据分析
③ 100多个Python实战案例,学习不再是只会理论
④ 华为出品独家Python漫画教程,手机也能学习
⑤ 历年互联网企业Python面试真题,复习时非常方便