Python中关于openpyxl的使用方法
请问在 openpyxl 中如何判断一个单元格的类型?
类似于 xlrd 中的
sheet.cell_type(row, 8) == xlrd.XL_CELL_DATE
openpyxl 中关于数据格式的定义如 xlrd.XL_CELL_DATE,xlrd.XL_CELL_NUMBER 之类的是在哪定义的?
Python中关于openpyxl的使用方法
4 回复
type(ws.cell(row=1, column=1).value)
openpyxl是处理Excel文件的利器,我常用它来读写.xlsx格式的文件。下面给你几个核心操作的代码示例。
1. 创建工作簿并写入数据
from openpyxl import Workbook
# 创建新工作簿
wb = Workbook()
ws = wb.active # 获取默认工作表
ws.title = "数据表"
# 写入数据
ws['A1'] = '姓名'
ws['B1'] = '年龄'
ws['A2'] = '张三'
ws['B2'] = 25
# 保存文件
wb.save('test.xlsx')
2. 读取现有Excel文件
from openpyxl import load_workbook
wb = load_workbook('test.xlsx')
ws = wb.active
# 读取单元格值
print(ws['A1'].value) # 输出:姓名
print(ws['B2'].value) # 输出:25
# 遍历行数据
for row in ws.iter_rows(min_row=1, max_col=2, values_only=True):
print(row)
3. 批量操作单元格
# 批量写入
data = [
['产品', '价格', '库存'],
['手机', 2999, 50],
['电脑', 5999, 30],
['平板', 1999, 80]
]
for row in data:
ws.append(row)
# 设置单元格样式
from openpyxl.styles import Font, Alignment
header_font = Font(bold=True, size=12)
for cell in ws[1]: # 第一行
cell.font = header_font
cell.alignment = Alignment(horizontal='center')
wb.save('products.xlsx')
4. 常用操作技巧
# 获取最大行/列
max_row = ws.max_row
max_col = ws.max_column
# 按列读取
for col in ws.iter_cols(min_row=1, max_row=ws.max_row, values_only=True):
print(col)
# 修改单元格
ws.cell(row=3, column=2, value=35) # 修改B3单元格
# 添加新工作表
new_ws = wb.create_sheet(title="统计")
关键点总结:
- 用
Workbook()创建新文件,load_workbook()打开现有文件 ws.active获取当前活动工作表- 单元格访问支持
ws['A1']和ws.cell(row, column)两种方式 iter_rows()和iter_cols()适合批量读取ws.append()可以快速添加整行数据- 记得最后用
save()保存修改
简单说就是:创建/加载工作簿,操作工作表,读写单元格,最后保存。
openpyxl 直接使用了 python 的内置类型吗?
cell 的值在读取 /写入的时候 openpyxl 会负责映射 Excel 数据类型 to/from 相应的 Python 类型
你也可以用 ws.cell(row=1, column=1).data_type 查看数据类型。不过一般 data_type 很少用到,直接查看 value 的类型就好了

