XlsxWriter' object has no attribute 'add_format
时间: 2023-07-28 12:39:46 浏览: 266
mdk_armcc_user_guide.pdf
如果使用 `xlsxwriter` 库时出现 `'XlsxWriter' object has no attribute 'add_format'` 的错误,这通常是因为在创建 `ExcelWriter` 对象时,使用了错误的参数 `engine='xlsxwriter'`,导致 Pandas 将 `ExcelWriter` 对象错误地赋值为 `XlsxWriter` 对象。
解决方法是修改 `engine` 参数为 `xlsxwriter`,并使用 `ExcelWriter` 的 `book` 属性获取 `Workbook` 对象,然后使用 `Workbook` 对象的 `add_format()` 方法创建单元格样式,示例如下:
```python
import pandas as pd
import xlsxwriter
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
# 创建 ExcelWriter 对象
writer = pd.ExcelWriter('data.xlsx', engine='xlsxwriter')
# 获取 Workbook 和 Worksheet 对象
workbook = writer.book
worksheet = writer.sheets['Sheet1']
# 创建单元格样式
align = workbook.add_format({'align': 'vcenter'})
# 将 DataFrame 写入 Excel 文件
df.to_excel(writer, sheet_name='Sheet1', index=False, startrow=1, startcol=2)
# 设置单元格样式
for row in range(2, len(df) + 2):
for col in range(3, 5):
worksheet.set_row(row, None, align)
worksheet.write(row, col, df.iloc[row - 2, col - 3])
# 保存 Excel 文件
writer.save()
```
在上述示例代码中,我们首先获取 `Workbook` 对象,然后使用 `Workbook` 对象的 `add_format()` 方法创建单元格样式 `align`。在遍历单元格时,我们使用 `worksheet.set_row()` 方法设置行高并应用样式,使用 `worksheet.write()` 方法写入数据。最后调用 `writer.save()` 方法保存 Excel 文件即可。
阅读全文