我使用的是csvkit version1.0.3中的in2csv,它是在Python3.7中使用pip安装的。
当使用该工具执行最基本的转换任务时,即
in2csv filename.xlsx > test.csv我犯了个错误
iter_rows() got an unexpected keyword argument 'row_offset'我知道这个错误是由底层的库openpyxl报告的。如何解决这个问题?
发布于 2019-02-16 04:29:01
自2019年2月6日起,iter_rows()中的row_offset参数似乎已被弃用,版本为2.6.0。我尝试查看提交历史记录,看到了以下更改:https://bitbucket.org/openpyxl/openpyxl/diff/openpyxl/worksheet/worksheet.py?diff1=e4ec3bde4dcc&diff2=3294de3d5668f462baaa6b0a3c17e3b92b8e5c48&at=default
要解决此问题,您必须不再使用row_offset,并相应地调整min_row和max_row。
例如:
如果您只处理工作表的第4行:
# old code
rows = worksheet.iter_rows(row_offset=3, max_row=1)
# new
rows = worksheet.iter_rows(min_row=4, max_row=4)如果您正在处理从第2行开始的行:
# old
rows = worksheet.iter_rows(row_offset=1, max_row=(worksheet.max_row - 1)
# new
rows = worksheet.iter_rows(min_row=2, max_row=worksheet.max_row)我真的很喜欢这个改变,尽管它破坏了我的代码。我认为与使用row_offset相比,使用min_row和max_row可以使代码更具可读性和直观性。
发布于 2019-02-20 07:28:30
我自己也遇到了这个问题,在我看来openpyxl的变化破坏了in2csv。
我已经通过卸载openpyxl并重新安装旧版本修复了这个问题。
pip uninstall openpyxl
pip install openpyxl==2.5 或者,如果您像我一样都是从头开始安装,那么在安装csv工具包之前只需安装openpyxl2.5即可
pip install openpyxl==2.5
pip install csvkithttps://stackoverflow.com/questions/54617949
复制相似问题