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. 获取单元格的值
以该表格为例展开说明:
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