我有一个包含数据的电子表格,我想知道包含数据的区域的第一个和最后一个单元格。我使用Python和Openpyxl。sheet.dimensions属性返回非空单元格区域的左上角和右下角单元格。如何将sheet.dimensions的结果放在两个变量中。示例: sheet.dimensions的结果为A2:C20。我需要一个变量包含该范围的第一个单元格(在本例中为A2),另一个变量包含该范围的最后一个单元格(在本例中为C20)。我期望像sheet.dimensions.first和.last这样的东西,但到目前为止我还找不到答案。
该程序的基本内容如下:
导入openpyxl
book =openpyxl.load_workbook(‘测试1.xlsx',data_only=True)
工作表= book.active
打印(sheet.dimensions)
Book.save(“结果测试1.xlsx")
当程序运行时,它给出结果A2:C20。
发布于 2018-09-06 22:28:52
我发现openpyxl具有以下属性:
这些正是我需要的数字,通过这些我知道需要多少次迭代才能处理整个工作表。示例:
导入openpyxl
book =openpyxl.load_workbook(‘测试1.xlsx',data_only=True)
工作表= book.active
mi_row = sheet.min_row
ma_row = sheet.max_row
mi_col = sheet.min_column
ma_col = sheet.max_column
打印(mi_row、mi_col、ma_row、ma_col)
对于sheet.iter_rows(min_row=mi_row,min_col=mi_col,max_row=ma_row,max_col=ma_col)中的行:
for cell in row:
pop = (cell.value)
print(pop)发布于 2020-09-04 21:39:28
我认为只需在字符串返回上使用split方法就可以开始使用它。这将为您提供两个单元地址,然后Openpyxl有一些方法可用作返回单元对象的参数(在这些地址)。
语法是这样的,不应该有多个冒号,尽管可能需要为工作表上的单个单元格捕获奇怪的情况(然后可能根本就没有冒号)。会认为这可能会做这件事:
upper_left, lower_right = return_string.split(":")
发布于 2021-12-27 19:51:32
有点晚了,但对于其他使用openpyxl的人来说,它有一些有用的实用函数来做这件事,并且可以处理任何奇怪的边缘情况。
from openpyxl import load_workbook
from openpyxl.utils.cell import range_boundaries, get_column_letter
wb_path = 'test 1.xlsx'
wb = load_workbook(wb_path, data_only=True)
ws = wb.active
# utility functions offer robust handling of excel range strings
test_ranges = [
"A1:C3", # -> A1 and C3
"$A1:C$3", # -> A1 and C3
"A2", # -> A2 and A2
ws.dimensions, # OP's answer
]
for rng in test_ranges:
# where the magic happens
sc, sr, ec, er = range_boundaries(rng)
start_cell = get_column_letter(sc) + str(sr)
end_cell = get_column_letter(ec) + str(er)
print(f"{start_cell} and {end_cell}")https://stackoverflow.com/questions/52076181
复制相似问题