在Python中,可以使用 pandas
库来处理数据框(DataFrame),以及使用 openpyxl
或 xlsxwriter
等库将数据导出到Excel文件中。下面是一个示例代码,演示如何将DataFrame的数据导出到Excel表格中的不同子表,确保后面的导出结果不覆盖前面的导出结果:
首先,确保你已经安装了 pandas
、openpyxl
(或其他你喜欢的Excel写入库):
pip install pandas openpyxl
然后,可以使用以下示例代码:
import pandas as pd
# 假设你有多个DataFrame,这里用两个DataFrame作为示例
data1 = {'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35]}
df1 = pd.DataFrame(data1)
data2 = {'City': ['New York', 'San Francisco', 'Los Angeles'],
'Population': [8_398_748, 883_305, 3_979_576]}
df2 = pd.DataFrame(data2)
# 创建一个Excel写入对象
with pd.ExcelWriter('output.xlsx', engine='openpyxl', mode='a') as writer:
# 将第一个DataFrame写入到Excel中的Sheet1
df1.to_excel(writer, sheet_name='Sheet1', index=False)
# 将第二个DataFrame写入到Excel中的Sheet2,避免覆盖之前的结果
df2.to_excel(writer, sheet_name='Sheet2', index=False)
这个例子中,pd.ExcelWriter
用于创建一个Excel写入对象,mode='a'
表示以追加模式打开文件,这样就可以确保后续的写入操作不会覆盖之前的结果。 to_excel
方法用于将DataFrame写入指定的Sheet中。
这样,就可以将多个DataFrame的数据分别写入到同一个Excel文件的不同Sheet中,而不会覆盖之前的结果。
import pandas as pd
# 读取已有的Excel文件
try:
with pd.ExcelWriter('output.xlsx', engine='openpyxl', mode='a') as writer:
# 读取已有的子表数据
existing_data = pd.read_excel('output.xlsx', sheet_name=None)
# 假设已有名为 'Sheet1' 和 'Sheet2' 的子表
sheet1_name = 'Sheet1'
sheet2_name = 'Sheet2'
# 判断子表是否已存在,如果存在则追加数据,否则创建新子表并写入数据
if sheet1_name in existing_data:
df1 = pd.DataFrame({'Name': ['David', 'Eva', 'Frank'],
'Age': [28, 32, 40]})
df1.to_excel(writer, sheet_name=sheet1_name, index=False, header=None, startrow=existing_data[sheet1_name].shape[0]+1)
else:
df1.to_excel(writer, sheet_name=sheet1_name, index=False)
if sheet2_name in existing_data:
df2 = pd.DataFrame({'City': ['Chicago', 'Miami', 'Dallas'],
'Population': [2_693_976, 490_014, 1_343_573]})
df2.to_excel(writer, sheet_name=sheet2_name, index=False, header=None, startrow=existing_data[sheet2_name].shape[0]+1)
else:
df2.to_excel(writer, sheet_name=sheet2_name, index=False)
except FileNotFoundError:
# 如果文件不存在,直接创建文件并写入数据
with pd.ExcelWriter('output.xlsx', engine='openpyxl') as writer:
df1 = pd.DataFrame({'Name': ['David', 'Eva', 'Frank'],
'Age': [28, 32, 40]})
df1.to_excel(writer, sheet_name='Sheet1', index=False)
df2 = pd.DataFrame({'City': ['Chicago', 'Miami', 'Dallas'],
'Population': [2_693_976, 490_014, 1_343_573]})
df2.to_excel(writer, sheet_name='Sheet2', index=False)