Python解析Excel及检测合并单元格的方法

Python解析扩展名为.xlsx的方法:

1. 导入openpyxl模块

import openpyxl

2. 导入Excel表格文件

使用load_workbook()方法读取Excel文件,该方法返回一个工作簿对象。

load_workbook()方法只能读取已有的Excel表格文件,无法创建新的Excel表格。

# file_path指文件路径
file_path = "example.xlsx"

# 读取excal
workbook = openpyxl.load_workbook(file_path)

3. 获取Sheet工作表

# 获取指定name的Sheet
sheet = workbook['Sheet1']
sheet = workbook.get_sheet_by_name('Sheet1')

# 调用get_sheet_names()方法获取所有的sheet工作表名,返回为一个列表
workbook.get_sheet_names()

4. 获取最大行和列

# 获取'Sheet1'工作表中的最大行和列
rows = sheet.max_row
cols = sheet.max_column

5. 获取单元格的值

以该表格为例展开说明:

Python解析Excel及检测合并单元格的方法_第1张图片 

5.1 根据指定坐标获取

# 以Sheet1['B2']单元格为例,获取该单元格的值
cell = sheet['B2']
print(cell.value) 

# 输出结果:100

5.2 根据指定行列获取

# 以(5,2)单元格为例,获取该单元格的值
cell = sheet.cell(row=5, column=2)
print(cell.value) 

# 输出结果:21


# 获取该单元格的坐标
print(cell.coordinate)

# 输出结果:B5

6. 通用方法:获取单元格的值(包括获取合并单元格的值)

解决思路:

获取单元格后,判断该单元格是否为合并单元格,若是,则找到该合并区域并返回其左上角的值。

通过sheet.merged_cell.ranges,可以获取当前工作表所有的合并区域列表。

实例:

from openpyxl.cell import MergedCell

# 获取Sheet1工作表中的所有合并区域列表
merged_ranges = sheet.merged_cell.ranges 

# 获取单元格的值,若为合并单元格,则返回合并区域左上角的值
def get_cell_val(i, j):
    cell = sheet.cell(i, j)
    # 判断单元格类型是否为合并单元格
    if isinstance(cell, MergedCell):
        for merged_range in sheet.merged_cell.ranges:
            if cell.coordinate in merged_range:
                cell = sheet.cell(row=merged_range.min_row, column=merged_range.min_col)
    return cell.value

你可能感兴趣的:(Python,excel,python)