下面我来详细讲解“Python使用Excel将数据写入多个sheet”的完整实例教程。
1.准备工作
1.1 安装Python库
首先,需要安装Python的相关库 pandas 和 openpyxl。可以通过以下命令来安装:
pip install pandas openpyxl
1.2 准备数据
在开始代码编写之前,我们需要准备一些数据,这里我们以三个 DataFrame 数据为例。
import pandas as pd
# 创建数据
df1 = pd.DataFrame({'name': ['Alice', 'Bob', 'Charlie'],
'age': [25, 26, 27],
'gender': ['F', 'M', 'M']})
df2 = pd.DataFrame({'city': ['Beijing', 'Shanghai', 'Guangzhou'],
'temperature': [24, 26, 28],
'weather': ['sunny', 'cloudy', 'rainy']})
df3 = pd.DataFrame({'fruit': ['apple', 'orange', 'banana'],
'price': [5.5, 3.2, 2.8],
'quantity': [10, 20, 15]})
2.实现代码
接下来就可以开始实现代码了。
2.1 创建 Excel 文件
首先创建一个新的 Excel 文件,并设置工作簿名为 test.xlsx
:
from openpyxl import Workbook
# 创建一个新的 Excel 文件
wb = Workbook()
# 设置工作簿名
ws1 = wb.active
ws1.title = 'Sheet1'
2.2 写入数据到 Excel 文件中
然后将每个 DataFrame 写入 Excel 文件的不同工作簿中。以下代码将 df1 的数据写入到 Sheet1
工作簿中:
from openpyxl.utils.dataframe import dataframe_to_rows
# 将数据写入 Sheet1 工作簿中
for r in dataframe_to_rows(df1, index=True, header=True):
ws1.append(r)
为了将 df2 和 df3 数据写入到不同的工作簿中,我们需要首先创建一个新的工作簿,并将其添加到 Excel 文件中:
# 创建一个新的工作簿 Sheet2,并将其添加到 Excel 文件中
ws2 = wb.create_sheet('Sheet2')
# 创建一个新的工作簿 Sheet3,并将其添加到 Excel 文件中
ws3 = wb.create_sheet('Sheet3')
然后将 df2 的数据写入到新创建的 Sheet2
工作簿中:
# 将数据写入 Sheet2 工作簿中
for r in dataframe_to_rows(df2, index=True, header=True):
ws2.append(r)
最后将 df3 的数据写入到新创建的 Sheet3
工作簿中:
# 将数据写入 Sheet3 工作簿中
for r in dataframe_to_rows(df3, index=True, header=True):
ws3.append(r)
2.3 保存 Excel 文件
最后,可以将 Excel 文件保存到本地磁盘中:
# 保存 Excel 文件
wb.save('test.xlsx')
3.示例说明
3.1 示例1
假设需要将数据分别写入到 Sheet1
、Sheet2
和 Sheet3
三个工作簿中。可以按照上述步骤编写代码,最后得到的 Excel 文件应该包含三个工作簿,分别为 Sheet1
、Sheet2
和 Sheet3
,每个工作簿中分别包含对应的数据。
3.2 示例2
假设现在需要将数据写入到已经存在的 Excel 文件中,可以使用 openpyxl
库中的 load_workbook()
方法加载已经存在的 Excel 文件,并将新的工作簿和数据写入到已有的 Excel 文件中,示例如下:
from openpyxl import load_workbook
# 加载存在的 Excel 文件
wb = load_workbook('test.xlsx')
# 创建一个新的工作簿 Sheet4,并将其添加到 Excel 文件中
ws4 = wb.create_sheet('Sheet4')
# 将数据写入 Sheet4 工作簿中
for r in dataframe_to_rows(df3, index=True, header=True):
ws4.append(r)
# 保存 Excel 文件
wb.save('test.xlsx')
以上代码将 df3 的数据写入到新创建的 Sheet4
工作簿中,并且保留了已有的 Sheet1
、Sheet2
和 Sheet3
三个工作簿的数据。