使用openpyxl遇TypeError:Table.__init__()不支持displayName参数
解决openpyxl中Table初始化的TypeError问题
问题详情
运行代码时触发以下错误:
TypeError: Table.__init__() got an unexpected keyword argument 'displayName'
代码完全照搬openpyxl官方文档示例,但依旧报错;移除displayName参数后,又出现与ref参数相关的错误。代码如下:
from openpyxl import Workbook from openpyxl.worksheet.table import Table, TableStyleInfo from reportlab import Table #........ data is a list like in the example # Create a Workbook instance wb = Workbook() # Create sheets ws_source = wb.active # Append data to the first sheet for row_data in data: ws_source.append(row_data) ws_source.title = "Source Sample List" # Create a table with the data table_range = "A1:I" + str(len(data)) tab = Table(displayName="SourceSampleTable", ref=table_range) tab.tableStyleInfo = TableStyleInfo( name="TableStyleMedium9", showFirstColumn=False, showLastColumn=False, showRowStripes=True, showColumnStripes=True ) ws_source.add_table(tab) # Add the table to the sheet
问题原因
你同时导入了两个同名的Table类:一个是openpyxl用于Excel表格的Table,另一个是reportlab用于生成PDF表格的Table。代码中实际调用的是reportlab的Table类,它不支持openpyxl的displayName参数,也不兼容ref参数的用法,这才导致了参数错误。
修复方法
有两种方式解决命名冲突:
- 删除多余导入:如果代码中不需要用到reportlab的Table,直接删掉
from reportlab import Table这一行即可。 - 使用别名区分:如果需要保留reportlab的导入,给openpyxl的Table起别名,避免混淆:
from openpyxl import Workbook from openpyxl.worksheet.table import Table as OpenpyxlTable, TableStyleInfo # 保留reportlab的导入(如果需要的话) from reportlab import Table # 创建Excel表格时使用别名 tab = OpenpyxlTable(displayName="SourceSampleTable", ref=table_range)
额外建议
如果修复命名冲突后仍有问题,检查你的openpyxl版本是否和文档匹配。旧版本可能不支持部分参数,执行pip install --upgrade openpyxl更新到最新稳定版即可。
内容的提问来源于stack exchange,提问作者KROLN
相关产品推荐
相关产品推荐

