如何在Python对Excel进行读取

  • Post category:Python

下面是如何在Python对Excel进行读取的完整实例教程。

1. 安装依赖库

使用Python读取Excel需要使用第三方库openpyxl,因此需要先安装此库。可使用以下命令进行安装:

pip install openpyxl

2. 打开Excel文件

使用openpyxl库,可使用下面的代码打开一个Excel文件:

import openpyxl

# 打开Excel文件
wb = openpyxl.load_workbook('example.xlsx')

这个例子中假设example.xlsx文件在当前目录中。如果文件在其他目录中,需要使用文件的完整路径。

3. 获取sheet

使用openpyxl库可以读取Excel文件中的多个sheet。可以通过workbook对象的sheetnames属性获取所有sheet的名称,同时也可以使用get_sheet_by_name()方法获取指定名称的sheet。

下面的代码展示了如何获取一个sheet:

# 获取指定名称的sheet
sheet = wb['Sheet1']

这个例子中获取名为“Sheet1”的sheet。如果要获取其他名称的sheet,需要使用不同的名称替换“Sheet1”。

4. 获取单元格的值

在获取sheet之后,可使用cell()方法获取指定单元格的值。此方法需要传递单元格的行和列,如下面的代码所示:

# 获取单元格的值
cell_value = sheet.cell(row=1, column=1).value
print(cell_value)

这个例子中获取第一行第一列单元格的值,并打印输出。

5. 遍历sheet中的所有行

读取Excel文件中的所有数据需要遍历sheet中的所有行。在openpyxl库中,可以使用iter_rows()方法获取sheet中的所有行。

下面的代码展示了如何遍历sheet中的所有行:

# 遍历sheet中的所有行
for row in sheet.iter_rows(values_only=True):
    print(row)

这个例子中使用values_only属性在遍历行的同时获取每行的值,并将每行的值打印输出。

示例说明

下面我们来看一下两个读取Excel的示例说明。

示例1:读取Excel并将数据写入CSV文件

这个示例中,我们将会读取一个Excel文件中的所有数据,并将数据写入一个CSV文件。

import openpyxl
import csv

# 打开Excel文件
wb = openpyxl.load_workbook('example.xlsx')
# 获取指定名称的sheet
sheet = wb['Sheet1']

# 获取sheet中的所有行
rows = sheet.iter_rows(values_only=True)

# 写入CSV文件
with open('example.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    for row in rows:
        writer.writerow(row)

示例2:将Excel数据导入MySQL数据库

这个示例中,我们将会读取一个Excel文件中的所有数据,并将数据插入到一个MySQL数据库中。

import openpyxl
import mysql.connector

# 打开Excel文件
wb = openpyxl.load_workbook('example.xlsx')
# 获取指定名称的sheet
sheet = wb['Sheet1']

# 获取sheet中的所有行
rows = sheet.iter_rows(values_only=True)

# 连接MySQL数据库
cnx = mysql.connector.connect(user='user', password='password', host='localhost', database='example_db')
cursor = cnx.cursor()

# 插入数据
for row in rows:
    add_data = ('INSERT INTO example_table '
                '(column1, column2, column3) '
                'VALUES (%s, %s, %s)')
    cursor.execute(add_data, row)
cnx.commit()
cursor.close()
cnx.close()

这个示例中连接的MySQL数据库需要替换为实际使用的数据库。同时也需要替换INSERT INTO语句中的表名和列名,以及最后的VALUES中的占位符。