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

ida*_*ika 6 openpyxl csvkit

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

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

in2csv filename.xlsx > test.csv
Run Code Online (Sandbox Code Playgroud)

我被打错了

iter_rows() got an unexpected keyword argument 'row_offset'
Run Code Online (Sandbox Code Playgroud)

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

ale*_*ria 5

从 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=默认

要解决此问题,您必须不再使用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)
Run Code Online (Sandbox Code Playgroud)

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

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

Run Code Online (Sandbox Code Playgroud)

我实际上喜欢这个改变,尽管它破坏了我的代码。我认为使用min_rowandmax_row使代码更具可读性和直观性,而不是使用row_offset.