pandas.ExcelWriter ValueError:xlsxwriter 不支持追加模式

作者:编程家 分类: pandas 时间:2025-10-16

使用Python进行数据处理和分析的时候,经常会用到pandas库。pandas是一个强大的数据处理工具,它能够轻松处理和操作各种类型的数据。在pandas中,我们可以通过pandas.ExcelWriter方法将数据写入Excel文件中。然而,在使用pandas.ExcelWriter方法时,有时会遇到一个ValueError:xlsxwriter不支持追加模式的错误。

这个错误的原因是xlsxwriter库不支持以追加模式写入Excel文件。也就是说,我们不能在已有的Excel文件中继续添加数据,只能创建一个新的Excel文件。如果我们想要追加数据到已有的Excel文件中,我们需要使用其他支持追加模式的库,比如openpyxl。

下面是一个示例代码,用来演示如何使用pandas.ExcelWriter方法将数据写入Excel文件中:

python

import pandas as pd

# 创建一个DataFrame

data = {'Name': ['Tom', 'Nick', 'John'],

'Age': [28, 32, 45],

'City': ['New York', 'Paris', 'London']}

df = pd.DataFrame(data)

# 创建一个ExcelWriter对象

writer = pd.ExcelWriter('output.xlsx', engine='xlsxwriter')

# 将DataFrame写入Excel文件中的Sheet1

df.to_excel(writer, sheet_name='Sheet1', index=False)

# 保存Excel文件

writer.save()

在上面的代码中,我们首先创建了一个DataFrame,然后创建了一个ExcelWriter对象,指定输出的文件名为output.xlsx,并选择xlsxwriter作为引擎。接下来,我们使用DataFrame的to_excel方法将数据写入Excel文件的Sheet1中,并通过writer.save()保存文件。

然而,如果我们尝试再次运行上面的代码,在同一个文件名output.xlsx下追加数据,就会出现ValueError:xlsxwriter不支持追加模式的错误。要解决这个问题,我们可以使用openpyxl库来实现追加数据的功能。

使用openpyxl库的代码如下所示:

python

import pandas as pd

from openpyxl import load_workbook

# 创建一个DataFrame

data = {'Name': ['Tom', 'Nick', 'John'],

'Age': [28, 32, 45],

'City': ['New York', 'Paris', 'London']}

df = pd.DataFrame(data)

# 打开Excel文件

book = load_workbook('output.xlsx')

# 将DataFrame写入Excel文件中的Sheet2

with pd.ExcelWriter('output.xlsx', engine='openpyxl') as writer:

writer.book = book

writer.sheets = dict((ws.title, ws) for ws in book.worksheets)

df.to_excel(writer, sheet_name='Sheet2', index=False)

# 保存Excel文件

book.save('output.xlsx')

在上面的代码中,我们首先导入了load_workbook函数,然后使用它打开了已有的Excel文件。接着,我们创建了一个ExcelWriter对象,并将打开的Excel文件赋值给writer.book和writer.sheets属性,以便在原有的Excel文件上进行追加操作。最后,我们使用DataFrame的to_excel方法将数据写入Excel文件的Sheet2中,并通过book.save()保存文件。

通过使用openpyxl库,我们成功地解决了pandas.ExcelWriter追加模式不支持的问题,实现了在已有的Excel文件中追加数据的功能。

在使用pandas.ExcelWriter方法时,如果遇到ValueError:xlsxwriter不支持追加模式的错误,我们可以使用openpyxl库来实现在已有的Excel文件中追加数据的功能。通过打开已有的Excel文件,将其赋值给ExcelWriter对象的book和sheets属性,我们可以在原有的Excel文件上进行追加操作。这样,我们就能够灵活地处理和操作Excel文件中的数据了。