目录
1. 安装相关库
Python 提供了多个库来操作 Excel 文件,其中两个最常用的分别是:
- openpyxl:可以读写
.xlsx
格式的 Excel 文件。 - pandas:使用更方便,适合操作数据表格式(但其底层也通常依赖 openpyxl)。
我们可以先安装这些库:
bash
pip install openpyxl pandas
2. 打开和读取 Excel 文件
使用 openpyxl
操作 xlsx
文件
Python
from openpyxl import load_workbook
# 加载 Excel 文件
wb = load_workbook('example.xlsx')
# 查看所有工作表名称
print(wb.sheetnames)
# 激活一个工作表
sheet = wb['Sheet1']
# 读取单元格内容
value = sheet['A1'].value # 读取 A1 单元格的值
print("单元格 A1 的值为:", value)
# 遍历所有行和列数据
for row in sheet.iter_rows(min_row=1, max_row=5, min_col=1, max_col=3):
print([cell.value for cell in row])
for col in sheet.iter_cols(min_row=1, max_row=5, min_col=1, max_col=3):
print([cell.value for cell in col])
使用 pandas
读取
Python
import pandas as pd
# 读取 Excel 文件中某个工作表
df = pd.read_excel('example.xlsx', sheet_name='Sheet1')
# 显示数据框内容
print(df)
# 获取某列数据
print(df['列名'])
# 遍历数据
for index, row in df.iterrows():
print(row['列名1'], row['列名2']) # 替换为你的实际列名
3. 写入和保存 Excel 文件
使用 openpyxl
写入和保存
Python
from openpyxl.utils import get_column_letter
# 修改单元格值
sheet['A1'] = '新值'
sheet.cell(row=2, column=2, value="另一新值")
# 保存修改后的文件
wb.save('modified_example.xlsx')
使用 pandas
写入新文件
Python
# pandas 可以写入数据框到 Excel
df.to_excel('output.xlsx', index=False) # 不保留索引列
4. 操作行、列、单元格
操作单一单元格
Python
# 获取某个单元格值
value = sheet['B2'].value
# 设置某个单元格值
sheet['B2'] = '新值'
遍历多行/多列
Python
for row in sheet.iter_rows(min_row=1, max_row=5): # 遍历前5行
for cell in row:
print(cell.value)
for col in sheet.iter_cols(min_col=1, max_col=3): # 遍历前3列
for cell in col:
print(cell.value)
插入和删除行/列
Python
# 插入空行
sheet.insert_rows(idx=2) # 在第2行的位置插入一行
# 删除行
sheet.delete_rows(idx=3) # 删除第3行
# 插入空列
sheet.insert_cols(idx=1) # 在第1列的位置插入空列
# 删除列
sheet.delete_cols(idx=2) # 删除第2列
5. 创建新工作簿与工作表
创建新工作簿
Python
from openpyxl import Workbook
# 创建一个新的空工作簿
wb = Workbook()
# 默认创建一个工作表
sheet = wb.active
# 重命名工作表名称
sheet.title = "新的工作表"
# 新增工作表
wb.create_sheet(title="新表2")
# 保存为文件
wb.save('new_file.xlsx')
删除工作表
Python
# 删除某一个工作表
del wb['新的工作表']
wb.save('new_file.xlsx')
6. 配置单元格样式和格式
openpyxl
提供了丰富的样式自定义接口,包括字体、颜色、对齐方式等。
修改字体
Python
from openpyxl.styles import Font
# 自定义字体
font = Font(name='Arial', size=12, bold=True, color="FF0000")
# 应用到单元格
sheet['A1'].font = font
修改填充背景颜色
Python
from openpyxl.styles import PatternFill
fill = PatternFill(fill_type='solid', start_color="FFFF00", end_color="FFFF00")
sheet['A1'].fill = fill
设置对齐方式
Python
from openpyxl.styles import Alignment
alignment = Alignment(horizontal='center', vertical='center')
sheet['A1'].alignment = alignment
边框设置
Python
from openpyxl.styles import Border, Side
# 定义边框样式
thin = Side(border_style="thin", color="000000")
border = Border(left=thin, right=thin, top=thin, bottom=thin)
# 应用到单元格
sheet['A1'].border = border
7. 示例代码
下面是一个整合的完整示例:
Python
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, Alignment, Border, Side
# 创建工作簿
wb = Workbook()
sheet = wb.active
sheet.title = "示例工作表"
# 写入表头
headers = ["姓名", "年龄", "成绩"]
for col_num, header in enumerate(headers, start=1):
cell = sheet.cell(row=1, column=col_num, value=header)
cell.font = Font(bold=True, color="FFFFFF")
cell.fill = PatternFill(fill_type="solid", start_color="4CAF50")
# 写入数据
data = [
["张三", 22, 85],
["李四", 23, 90],
["王五", 21, 78]
]
for row_num, row_data in enumerate(data, start=2):
for col_num, value in enumerate(row_data, start=1):
sheet.cell(row=row_num, column=col_num, value=value)
# 调整列宽
for col in sheet.columns:
max_length = max(len(str(cell.value)) for cell in col if cell.value is not None)
sheet.column_dimensions[col[0].column_letter].width = max_length + 2
# 保存文件
wb.save('example_styled.xlsx')