6

我正在使用来自 csvkit 版本 1.0.3 的 in2csv,使用 pip 和 Python 3.7 安装。

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

in2csv filename.xlsx > test.csv

我被错误击中

iter_rows() got an unexpected keyword argument 'row_offset'

我了解该错误是由底层库 openpyxl 报告的。如何解决这个问题?

4

2 回答 2

4

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

要解决此问题,您必须不再使用row_offset并相应地调整您的min_rowand 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)

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

# 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_rowandmax_row使代码更具可读性和直观性,而不是使用row_offset.

于 2019-02-15T20:29:01.380 回答
4

我自己也遇到了这个问题,在我看来,openpyxl 的变化已经破坏了 in2csv。

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

pip uninstall openpyxl
pip install openpyxl==2.5 

或者,如果像我一样,您是从头开始安装,只需在安装 csv 套件之前安装 openpyxl 2.5

pip install openpyxl==2.5
pip install csvkit
于 2019-02-19T23:28:29.847 回答