Python从0到50(十五):读写Excel文件

目录

1. 安装相关库

2. 打开和读取 Excel 文件

使用 openpyxl 操作 xlsx 文件

使用 pandas 读取

3. 写入和保存 Excel 文件

使用 openpyxl 写入和保存

使用 pandas 写入新文件

4. 操作行、列、单元格

操作单一单元格

遍历多行/多列

插入和删除行/列

5. 创建新工作簿与工作表

创建新工作簿

删除工作表

6. 配置单元格样式和格式

修改字体

修改填充背景颜色

设置对齐方式

边框设置

7. 示例代码


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')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值