Python办公

Python办公 知识量:2 - 22 - 78

1.4 访问单元格><

获取单个单元格- 1.4.1 -

在openpyxl库中,获取单个单元格的方法非常直接。可以通过Worksheet对象的cell()方法来获取特定单元格。以下是如何使用此方法的步骤:

# 假设我们已经有了一个Workbook对象,我们将其命名为wb  
# wb = openpyxl.load_workbook('your_file.xlsx')  
  
# 选择一个工作表,例如第一个工作表  
ws = wb.active  
  
# 使用cell()方法获取特定单元格,例如获取A1单元格  
cell = ws['A1']  
  
# 现在,'cell'对象就是A1单元格的Cell对象,你可以读取或修改它的值  
print(cell.value)  # 输出A1单元格的值  
  
# 你也可以通过坐标获取单元格,例如获取(1, 1)位置的单元格  
cell_by_coordinate = ws[1, 1]  
print(cell_by_coordinate.value)  # 输出A1单元格的值

在上述代码中,首先获取了工作簿的活动工作表。然后,使用cell()方法通过单元格的字母引用(如'A1')或坐标(如(1, 1))来获取单元格。然后可以读取或修改这些单元格的值。

单元格属性- 1.4.2 -

在openpyxl中,通过ws.cell(row, column)方法获取的单元格的引用中,row和column的索引都是从1开始的,而不是从0开始。所以,ws.cell(2,5)获取的是第2行,第5列的单元格,也就是E1单元格。

要获取单元格的属性,可以使用Cell对象的各种属性。以下是一些常用的Cell属性:

  • cell.value: 返回单元格的值。例如,cell.value会返回E1单元格的值。

  • cell.row: 返回单元格所在的行。例如,cell.row会返回2。

  • cell.column: 返回单元格所在的列。例如,cell.column会返回5。

  • cell.coordinate: 返回单元格的坐标(以字母表示)。例如,cell.coordinate会返回'E1'。

  • cell.style: 返回应用于单元格的样式。可以使用这个属性来改变单元格的格式,例如字体、颜色等。

修改单元格- 1.4.3 -

单元格的值就是Cell对象的value属性,所以可以通过修改Cell对象的value属性来修改单元格的值。例如,要将E1单元格的值修改为'Hello',可以这样做:

cell = ws.cell(2, 5)    
cell.value = 'Hello'

这样,E1单元格的值就被修改为'Hello'了。

获取多个单元格- 1.4.4 -

openpyxl库提供了多种方法来获取多个单元格。

1. 获取单行或单列:

  • 获取单行:ws.iter_rows(min_row=row_start, max_row=row_end, values_only=True)

  • 获取单列:ws.iter_cols(min_col=col_start, max_col=col_end, values_only=True)

示例:

python`# 获取第2至5行的内容(只获取值)  
for row in ws.iter_rows(min_row=2, max_row=5, values_only=True):  
    print(row)  
  
# 获取A至C列的内容(只获取值)  
for col in ws.iter_cols(min_col='A', max_col='C', values_only=True):  
    print(col)`

2. 获取多个单元格:

如果想一次获取多个特定的单元格,可以直接使用切片语法。但需要注意的是,这种方法返回的是一个迭代器,所以需要遍历它来获取所有的单元格。

# 获取第2行的前3个单元格  
for cell in ws[2][:3]:  
    print(cell.value)

3. 使用cell()方法与范围:

还可以结合cell()方法和range对象来获取一个范围内的所有单元格。

for row in ws.iter_rows(min_row=2, max_row=5, min_col=1, max_col=3):  
    for cell in row:  
        print(cell.value)

上面的代码会获取第2至5行,第1至3列的所有单元格的值。