提问人:Quicky 提问时间:11/10/2023 更新时间:11/10/2023 访问量:54
如何使用 OpenPyxl 确定 Excel 工作表中的行是否被删除
How to determine if a row is striked in Excel sheet using OpenPyxl
问:
我正在使用 openpyxl 读取 excel 文件,但遇到以下问题:
有些单元格似乎在 excel 中被罢工,并且它们的单元格罢工属性为 True,我成功地使用 Openpyxl 处理了它们
但是有些单元格似乎在 excel 中被删除,但格式单元格删除属性为 False。 这是因为设置了行罢工属性。
我的问题是我无法成功使用 OpenPyxl 访问行的罢工属性
sheet = book[sheet_name]
for row in sheet[0:sheet.max_row]:
if sheet.row_dimensions[row[0].row].font.strike:
break
我的代码永远不会中断,尽管有些行被删除了
奇怪的是,当我查看row_dimensions工作表时,我没有看到每行的条目,而只看到某些行的条目,而我没有任何删除的行的条目。 我不明白在什么标准上,有些行有相应的row_dimensions,有些没有
您知道如何进行或对此有所了解吗?
答:
0赞
Corralien
11/10/2023
#1
使用此输入:
下面的代码似乎有效:
from openpyxl import Workbook
book = load_workbook(filename='Book 1.xlsx')
sheet = book['Sheet1']
for row_id, row in sheet.row_dimensions.items():
if row.font.strike:
print(f'{row_id}: strike row')
for row in sheet.iter_rows():
for cell in row:
cell_id = f'{cell.column_letter}{cell.row}'
if cell.font.strike:
print(f'{cell_id}: strike cell')
输出:
1: strike row
A1: strike cell
B1: strike cell
C1: strike cell
D1: strike cell
B2: strike cell
D2: strike cell
评论
0赞
Quicky
11/10/2023
嗨,我在我的 excel 文件上尝试了您的代码,只显示罢工单元格消息。未检测到罢工行。您使用哪个版本的 openpyxl ?
0赞
Corralien
11/10/2023
openpyxl==3.1.2
(最新版本)。对于这个版本,我不能使用sheet[0:sheet.max_row]
0赞
Quicky
11/11/2023
好的,我有 3.0.10 版,我会要求有 3.1.2 版
0赞
Quicky
11/15/2023
事实上,它没有出现在行属性中,因为它是由于条件格式。似乎当条件格式应用于单元格时,修改不会出现在 Excel 中的单元格格式信息中,而 openpyxl 反映了这一点
评论
sheet[0:sheet.max_row]
它真的有效吗?row_dimensions