首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Openpyxl sheet.dimensions

Python Openpyxl sheet.dimensions
EN

Stack Overflow用户
提问于 2018-08-29 19:17:23
回答 3查看 4.7K关注 0票数 2

我有一个包含数据的电子表格,我想知道包含数据的区域的第一个和最后一个单元格。我使用Python和Openpyxl。sheet.dimensions属性返回非空单元格区域的左上角和右下角单元格。如何将sheet.dimensions的结果放在两个变量中。示例: sheet.dimensions的结果为A2:C20。我需要一个变量包含该范围的第一个单元格(在本例中为A2),另一个变量包含该范围的最后一个单元格(在本例中为C20)。我期望像sheet.dimensions.first和.last这样的东西,但到目前为止我还找不到答案。

the spreadsheet

该程序的基本内容如下:

导入openpyxl

book =openpyxl.load_workbook(‘测试1.xlsx',data_only=True)

工作表= book.active

打印(sheet.dimensions)

Book.save(“结果测试1.xlsx")

当程序运行时,它给出结果A2:C20。

EN

回答 3

Stack Overflow用户

发布于 2018-09-06 22:28:52

我发现openpyxl具有以下属性:

  • sheet.min_row
  • sheet.max_row
  • sheet.min_column
  • sheet.max_column

这些正是我需要的数字,通过这些我知道需要多少次迭代才能处理整个工作表。示例:

导入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)中的行:

代码语言:javascript
复制
for cell in row:

    pop = (cell.value)

    print(pop)
票数 5
EN

Stack Overflow用户

发布于 2020-09-04 21:39:28

我认为只需在字符串返回上使用split方法就可以开始使用它。这将为您提供两个单元地址,然后Openpyxl有一些方法可用作返回单元对象的参数(在这些地址)。

语法是这样的,不应该有多个冒号,尽管可能需要为工作表上的单个单元格捕获奇怪的情况(然后可能根本就没有冒号)。会认为这可能会做这件事:

upper_left, lower_right = return_string.split(":")

票数 0
EN

Stack Overflow用户

发布于 2021-12-27 19:51:32

有点晚了,但对于其他使用openpyxl的人来说,它有一些有用的实用函数来做这件事,并且可以处理任何奇怪的边缘情况。

代码语言:javascript
复制
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}")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52076181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档