Python对excel的基本操作方法

  • Post category:Python

下面我将为您详细讲解Python对Excel的基本操作方法的完整实例教程。

1. 安装所需库

首先,要使用Python来操作Excel,需要安装最常用的openpyxl库。这可以使用pip命令完成。在命令行中输入以下命令即可完成安装:

pip install openpyxl

2. 打开Excel文件

首先,我们需要通过openpyxl库中的load_workbook()函数来加载工作簿。 这个函数需要传入待操作的Excel文件的完整路径,如下所示:

from openpyxl import load_workbook

wb = load_workbook(filename='工作簿1.xlsx')

3. 选择Sheet

工作簿包含许多Sheet,我们需要选择某个Sheet进行操作,使用openpyxl库中的active属性即可实现。 调用属性后返回第一个活动的工作表,可以使用以下代码查询当前活动表:

wb.active

要选择一个不同的Sheet,可以使用以下代码:

ws = wb['Sheet1']

这里将第一个工作表作为示例。

4. 读取数据

读取Excel的数据是最基本的操作之一,可以使用openpyxl库中的cell()函数实现,如下所示:

cell_value = ws.cell(row=1, column=1).value

这将获取第一个单元格的值。 要获取整行或整列的值,可以使用以下代码:

# 获取第一行的所有值
row_values = []
for cell in ws[1]:
    row_values.append(cell.value)

# 获取第一列的所有值
col_values = []
for cell in ws['A']:
    col_values.append(cell.value)

5. 写入数据

要将数据写入Excel中,可以使用openpyxl库中的cell()函数实现,如下所示:

ws.cell(row=1, column=1, value="Hello World")

这将在第一个单元格中编写”Hello World”。 要同时写入多个单元格,请使用以下代码:

data = [
    [1, 2, 3],
    [4, 5, 6]
]
for i, row in enumerate(data, start=1):
    for j, value in enumerate(row, start=1):
        ws.cell(row=i, column=j, value=value)

这将在工作表中编写一个简单的2×3数据集。

示例说明

示例一

下面将一个易传签到表中的数据导入Excel文件中,其中数据是以如下形式存在的:

data = [
    ['ID', '姓名', '签到时间'],
    ['001', '小明', '2022-01-05 08:30:00'],
    ['002', '小红', '2022-01-05 08:45:00'],
    ['003', '小刚', '2022-01-05 09:00:00']
]

要将这些数据写入Excel文件,可以使用以下代码:

from openpyxl import Workbook

wb = Workbook()
ws = wb.active

data = [
    ['ID', '姓名', '签到时间'],
    ['001', '小明', '2022-01-05 08:30:00'],
    ['002', '小红', '2022-01-05 08:45:00'],
    ['003', '小刚', '2022-01-05 09:00:00']
]

# 写入数据
for row in data:
    ws.append(row)

# 保存Excel文件
wb.save('示例一.xlsx')

示例二

下面将一个Excel文件中的数据读入后进行简单处理,然后将处理后的数据写入另一个Excel文件中。假设Excel文件中的数据以如下形式存在:

data = [
    ['ID', '姓名', '语文', '数学', '英语'],
    ['001', '小明', 90, 85, 92],
    ['002', '小红', 87, 95, 89],
    ['003', '小刚', 92, 92, 90]
]

要实现这个操作,可以使用以下代码:

from openpyxl import load_workbook, Workbook

# 打开原始文件
wb1 = load_workbook(filename='示例二_原始.xlsx')
ws1 = wb1.active

# 处理数据
data = []
for row in ws1.iter_rows(values_only=True):
    item = [row[0], row[1]]
    item.append(sum(row[2:]) / 3)  # 计算平均分
    data.append(item)

# 写入数据
wb2 = Workbook()
ws2 = wb2.active
for row in data:
    ws2.append(row)

# 保存新文件
wb2.save('示例二_处理后.xlsx')

这里实现了读取数据、数据处理和写入数据3个操作。 原始文件中每个学生有语文、数学和英语3个分数,但是处理后的Excel文件只包含每个学生的平均分数。