上述代码无法进行删除操作,并且报错: ws.delete_rows(row[0].row) AttributeError: 'str' object has no attribute 'row'
时间: 2023-12-13 08:05:49 浏览: 190
这个错误表明在执行 `ws.delete_rows(row[0].row)` 时,`row[0]` 是一个字符串对象,而字符串对象没有 `row` 属性,因此无法删除行。
可能的原因是 `row` 这个变量的值不是你期望的类型。你可以在调用 `ws.iter_rows()` 的时候,增加一个 `value_only=True` 参数,以便获取单元格的值而不是单元格对象。例如:
```
for row in ws.iter_rows(min_row=2, min_col=1, values_only=True):
if row[2] == "Yes":
ws.delete_rows(row[0])
```
这样,`row` 就是一个由单元格值组成的元组,而不是单元格对象。然后你就可以把 `row[0]` 直接传给 `ws.delete_rows()`,而无需使用 `row[0].row`。
相关问题
# 删除宿舍入住信息 def delete_info(): wb = openpyxl.load_workbook('c:/students.xlsx') sheet = wb.active name = input("请输入要删除的学生姓名:") for row in sheet.iter_rows(min_row=2): if row[0].value == name: sheet.delete_rows(row[0].row) wb.save('c:/students.xlsx') print("删除成功!") return print("未找到该学生信息!")
这段代码用于删除 Excel 文件中的学生宿舍信息。具体来说,它会提示用户输入要删除的学生姓名,并在 Excel 文件中查找该姓名对应的行。如果找到了该学生信息,它会使用 `sheet.delete_rows()` 方法删除该行,并将 Excel 文件保存。最后,它会输出“删除成功!”并返回程序执行。如果没有找到该学生信息,则会输出“未找到该学生信息!”。
需要注意的是,该代码同样使用了 openpyxl 库来操作 Excel 文件。此外,该代码假设 Excel 文件中第一行为表头,从第二行开始存储学生信息。如果实际情况不符,需要相应地修改代码。
table.delete_rows(0, 1) AttributeError: 'Table' object has no attribute 'delete_rows'
看起来你在尝试操作一个 `Table` 对象,但发现没有 `delete_rows` 这个属性。这可能是由于你使用的 `docx` 库版本较旧,不支持这个直接删除行的功能,或者你可能需要检查一下库的文档或更新到最新版本以确认是否有此功能。
如果你想要删除表格的某一行,可以试试以下替代方法,先确定你想删除哪一行,然后找到对应的 `Row` 对象并调用 `remove` 或 `delete` 方法:
```python
# 获取你要删除的那一行
row_to_delete = table.rows[0] # 假设我们从第一行开始
# 删除这一行
row_to_delete.remove()
```
如果你是在处理类似 Excel 的数据,可能需要使用 `pandas` 库,其中可以更方便地进行行的操作,如:
```python
import pandas as pd
# 将表格转成 DataFrame
df = pd.DataFrame(table)
# 删除某一行
df.drop(0, inplace=True) # 这里的0是行索引,注意这不是Excel行数,是一个从0开始的索引
# 再将 DataFrame 回填到表格
table.from_df(df)
```
阅读全文