Python错误: AttributeError: ‘Worksheet‘ object has no attribute ‘set_column‘ 解决办法

在使用Python的pandas库将MySQL查询结果导出为Excel文件时,遇到AttributeError:'Worksheet' object has no attribute 'set_column'的错误。问题出在尝试对.xls格式文件设置列宽,更改文件后缀为.xlsx后,错误消失。此外,错误可能由Xlsxwriter未安装、openpyxl版本不兼容或其他相关模块问题引起。解决方案包括检查并安装正确版本的依赖库,或确保使用.xlsx格式导出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:

Python使用pandas库实现MySQL查询数据库查到的数据导出Excel表,在设定列宽时报错:AttributeError: 'Worksheet' object has no attribute 'set_column' 代码如下

import pandas as pd
import pandas.io.formats.excel

def downloadExcel():
	# 查询数据库的函数实现部分省略
	sql = "SELECT * FROM XIAOBAIBAI_LOG WHERE ID='666'"
	resList = mysqlData.search(sql) # resList为查询到的结果
	cols = mysqlData.cur.description
	col = []
	for c in cols:
		col.append(c[0]) # 提取数据库的columns作为每列标题
	
	df = pd.DataFrame(list(resList), columes=col)
	pandas.io.formats.excel.header_style = None
	writer = pd.ExcelWriter(r"output/XIAOBAIBAI_LOG.xls")
	df.to_excel(writer, sheet_name='XIAOBAIBAI_LOG')
	worksheet = writer.sheets['XIAOBAIBAI_LOG']
	worksheet.set_column("A:A",15) # 设置A列宽度为15
	writer.save()
	writer.close()

解决方案:

看了很多解决 AttributeError: 'Worksheet' object has no attribute 'set_column' 错误的方案,尝试了都没有解决,结果发现一个小细节,原因竟然是Excel导出后缀的问题,之前对Excel的操作都保存为 .xls 格式,也没有问题,但是使用 set_column 方法出现报错了,把后缀改为.xlsx 报错就没有了。

	writer = pd.ExcelWriter(r"output/XIAOBAIBAI_LOG.xlsx")

其他可能原因分析:

后续这里会陆续贴一些其他情况导致这个报错的解决方案
1、未安装Xlsxwriter,可参考:
AttributeError:“工作表”对象没有属性“ set_column”

2、在最新版的openpyxl模块中已删除报错对应的功能或换了方法名,可参考:
openpyxl no attribution error

3、openpyxl版本问题、安装包缺失问题,参考文章:
Attributeerror: ‘worksheet’ object has no attribute 'insert_cols’的解决办法

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值