Python openpyxl错误:获取了意外的关键字参数';quotePrefix';
我编写了一个脚本,在MacOS上使用openpyxl读取.xlsx文件。 我进行了更新,以允许我的脚本在MacOS或Linux上运行。调用Python openpyxl错误:获取了意外的关键字参数';quotePrefix';,python,openpyxl,Python,Openpyxl,我编写了一个脚本,在MacOS上使用openpyxl读取.xlsx文件。 我进行了更新,以允许我的脚本在MacOS或Linux上运行。调用load\u工作簿时,Openpyxl引发错误 import platform system = platform.system() if system == "Darwin": cpgatt = "/Users/tlombard/desktop/py-sandbox/PickleJar/CSG_CHG_Clarity_attributes1.xls
load\u工作簿
时,Openpyxl引发错误
import platform
system = platform.system()
if system == "Darwin":
cpgatt = "/Users/tlombard/desktop/py-sandbox/PickleJar/CSG_CHG_Clarity_attributes1.xlsx"
if system == 'Linux':
cpgatt = "/ws/tlombard-sjc/Picklejar/CSG_CHG_Clarity_attributes1.xlsx"
cpgatt_wb = openpyxl.load_workbook(cpgatt)
我得到的错误是:
"TypeError: __init__() got an unexpected keyword argument 'quotePrefix'"
The full traceback:-------
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/auto/elb_hwtools/cae/lib/python/v2.7.8/openpyxl/reader/excel.py", line 149, in load_workbook
_load_workbook(wb, archive, filename, read_only, keep_vba)
File "/auto/elb_hwtools/cae/lib/python/v2.7.8/openpyxl/reader/excel.py", line 237, in _load_workbook
keep_vba=keep_vba)
File "/auto/elb_hwtools/cae/lib/python/v2.7.8/openpyxl/reader/worksheet.py", line 324, in read_worksheet
fast_parse(ws, xml_source, shared_strings, style_table, color_index)
File "/auto/elb_hwtools/cae/lib/python/v2.7.8/openpyxl/reader/worksheet.py", line 312, in fast_parse
parser.parse()
File "/auto/elb_hwtools/cae/lib/python/v2.7.8/openpyxl/reader/worksheet.py", line 93, in parse
dispatcher[tag_name](element)
File "/auto/elb_hwtools/cae/lib/python/v2.7.8/openpyxl/reader/worksheet.py", line 189, in parse_row_dimensions
self.parse_cell(cell)
File "/auto/elb_hwtools/cae/lib/python/v2.7.8/openpyxl/reader/worksheet.py", line 134, in parse_cell
cell = Cell(self.ws, column, row, **style)
TypeError: __init__() got an unexpected keyword argument 'quotePrefix'
>>> cpgatt
'/ws/tlombard-sjc/Picklejar/CSG_CHG_Clarity_attributes1.xlsx'
>>>
“TypeError:uuu init_uuuuuuuu()获得意外的关键字参数'quotePrefix'”
完整回溯:-------
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/auto/elb_hwtools/cae/lib/python/v2.7.8/openpyxl/reader/excel.py”,第149行,在load_工作簿中
_加载工作簿(wb、存档、文件名、只读、保留vba)
文件“/auto/elb\uhwtools/cae/lib/python/v2.7.8/openpyxl/reader/excel.py”,第237行,在加载工作簿中
keep_vba=keep_vba)
文件“/auto/elb_-hwtools/cae/lib/python/v2.7.8/openpyxl/reader/worksheet.py”,第324行,在read_工作表中
快速解析(ws、xml、共享字符串、样式表、颜色索引)
文件“/auto/elb_-hwtools/cae/lib/python/v2.7.8/openpyxl/reader/sheet.py”,第312行,快速解析
parser.parse()
文件“/auto/elb_hwtools/cae/lib/python/v2.7.8/openpyxl/reader/sheet.py”,第93行,在parse中
调度程序[标记名称](元素)
文件“/auto/elb_hwtools/cae/lib/python/v2.7.8/openpyxl/reader/sheetwork.py”,第189行,在parse_row_维度中
self.parse_单元(单元)
parse_单元格中的文件“/auto/elb_hwtools/cae/lib/python/v2.7.8/openpyxl/reader/sheetwork.py”,第134行
单元格=单元格(self.ws、列、行、**样式)
TypeError:uuu init_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
>>>关贸总协定
“/ws/tlombard sjc/Picklejar/CSG\u CHG\u clearity\u attributes1.xlsx”
>>>
我也遇到了同样的问题,以下是我的完整跟踪:
Traceback (most recent call last):
File "__init__.py", line 318, in readExcelFile
wb2 = load_workbook( unicode(self.ui_sourcePath.text()))#self.ui_sourcePath.text().replace("/", "\\"))
File "C:\Python27\lib\site-packages\openpyxl\reader\excel.py", line 149, in load_workbook
_load_workbook(wb, archive, filename, read_only, keep_vba)
File "C:\Python27\lib\site-packages\openpyxl\reader\excel.py", line 237, in _load_workbook
keep_vba=keep_vba)
File "C:\Python27\lib\site-packages\openpyxl\reader\worksheet.py", line 325, in read_worksheet
fast_parse(ws, xml_source, shared_strings, style_table, color_index)
File "C:\Python27\lib\site-packages\openpyxl\reader\worksheet.py", line 313, in fast_parse
parser.parse()
File "C:\Python27\lib\site-packages\openpyxl\reader\worksheet.py", line 93, in parse
dispatcher[tag_name](element)
File "C:\Python27\lib\site-packages\openpyxl\reader\worksheet.py", line 190, in parse_row_dimensions
self.parse_cell(cell)
File "C:\Python27\lib\site-packages\openpyxl\reader\worksheet.py", line 135, in parse_cell
cell = Cell(self.ws, column, row, **style)
TypeError: __init__() got an unexpected keyword argument 'quotePrefix'
正如您在跟踪中所看到的,当openpyxl尝试解析工作簿时,会发生错误。我在C:\Python27\lib\site packages\openpyxl\reader\worksheet.py
@135中添加了以下行
column, row = coordinate_from_string(coordinate)
print column, row
cell = Cell(self.ws, column, row, **style)
问题来自Excel工作簿中的一个单元格,而只有一个单元格。我对这个问题的临时解决办法是删除quotePrefix
中的样式
dict:
style = {}
if style_id is not None:
style_id = int(style_id)
style = self.styles[style_id]
if "quotePrefix" in style.keys():
del style["quotePrefix"]
column, row = coordinate_from_string(coordinate)
cell = Cell(self.ws, column, row, **style)
self.ws._add_cell(cell)
我无法找到此特定单元格导致这些问题的原因以及如何覆盖引号前缀。我的一个脚本中也出现了类似的错误。我认为这是openpyxl无法解析的数字格式造成的。请提交一份带有完整回溯的错误报告,最好是一个示例文件。感谢Charlie-这里是错误报告的链接-感谢Charlie提出的解决建议。我已经将linux机器上的openpyxl版本降到了2.1.5版本,一切都很好。@charlectorlak我们如何提交错误报告,我们应该克隆执行拉请求然后提交错误吗?我来自git hub的背景,我一直在阅读Merc文档,但是这个
hg clone
命令让我陷入了困境。在2.2之前,样式是直接建模的,但是使它们不可变会使它们变慢。2.2将指向各种样式设置的指针直接映射到“可设置样式”的对象(单元格、行、列)。这样做更快、更安全,不会产生意外后果,但还没有考虑到所有的可能性quotePrefix
和pivotButton
是隐式格式选项,在GUI中没有直接模拟。删除它们将防止出现异常,但也会删除样式。只要您只需要数据,那么在修复之前,使用只读模式可能是最好的解决方法。