in2csv:iter_rows()获得了意外的关键字参数“ row_offset”

时间:2019-02-10 15:29:32

标签: openpyxl csvkit

我正在使用csvkit版本1.0.3中的in2csv,并通过pip与Python 3.7一起安装。

在使用该工具执行最基本的转换任务时,即

in2csv filename.xlsx > test.csv

我被打错了

iter_rows() got an unexpected keyword argument 'row_offset'

我知道该错误是由基础库openpyxl报告的。该问题如何解决?

2 个答案:

答案 0 :(得分:3)

我自己只是遇到了这个问题,在我看来,openpyxl的更改已破坏了in2csv。

我已通过卸载openpyxl并重新安装旧版本来解决此问题。

pip uninstall openpyxl
pip install openpyxl==2.5 

或者在像我一样从头开始安装的情况下,只需在安装csv工具包之前先安装openpyxl 2.5

pip install openpyxl==2.5
pip install csvkit

答案 1 :(得分:0)

从2019年2月6日开始,在openpyxl 2.6.0版中,似乎不推荐使用iter_rows()中的row_offset参数。我尝试查看提交历史记录,并看到以下更改:  https://bitbucket.org/openpyxl/openpyxl/diff/openpyxl/worksheet/worksheet.py?diff1=e4ec3bde4dcc&diff2=3294de3d5668f462baaa6b0a3c17e3b92b8e5c48&at=default

要解决此问题,您必须不再使用row_offset并相应地调整min_rowmax_row

例如

如果您仅处理工作表的第四行:

# old code
rows = worksheet.iter_rows(row_offset=3, max_row=1)

# new 
rows = worksheet.iter_rows(min_row=4, max_row=4)

如果您要处理从第二行开始的行:

# 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)

我确实喜欢这个更改,即使它破坏了我的密码。我认为使用min_rowmax_row使得代码比使用row_offset更具可读性和直观性。