python之openpyxl模块的安装和基本用法(excel管理)

  • Post category:Python

下面我来为您详细讲解一下“python之openpyxl模块的安装和基本用法(excel管理)”的实例教程。

安装openpyxl模块

openpyxl是一个用于处理Excel电子表格文件的Python模块。您可以通过在终端输入以下命令来安装openpyxl模块:

pip install openpyxl

基本用法

请确保已经正确安装openpyxl模块。我们可以通过以下步骤进行excel管理:

1. 创建一个新的工作簿

from openpyxl import Workbook

wb = Workbook()   # 创建工作簿
ws = wb.active   # 获取活动工作表
ws.title = "MySheet"   # 工作表命名为"MySheet"

wb.save("mysheet.xlsx")  # 保存工作簿到本地文件

2. 向工作表中添加数据

from openpyxl import Workbook

wb = Workbook()
ws = wb.active
ws.title = "MySheet"

# 向工作表中添加数据
ws["A1"] = "编号"
ws["B1"] = "名称"
ws["C1"] = "数量"

data = [
    (1, "苹果", 10),
    (2, "橘子", 20),
    (3, "葡萄", 30)
]

for row in data:
    ws.append(row)

wb.save("mysheet.xlsx")

以上代码中使用了ws["A1"]这样的语法来指定单元格,ws.append(row)可以追加行到工作表中。

3. 读取Excel表格中的数据

import openpyxl

wb = openpyxl.load_workbook("mysheet.xlsx")

ws = wb.active

for row in ws.iter_rows(min_row=2, values_only=True):
    print(row)

以上代码中,我们首先使用openpyxl.load_workbook()函数将Excel工作簿加载到内存中,然后使用ws.iter_rows()遍历工作表中的行数据,通过使用values_only=True参数,我们可以获得每行数据的值而非单元格对象。

示例说明

示例一:将不同的数据分别写入到不同的工作表中

以下示例展示如何将名字、性别、职位等信息分别写入到不同的工作表中:

from openpyxl import Workbook

wb = Workbook()
ws1 = wb.create_sheet("Employees")
ws2 = wb.create_sheet("Customers")

# 添加列名
ws1.append(("Name", "Gender", "Position"))
ws2.append(("Name", "Gender", "City"))

employees = [
    ("Tom", "Male", "Manager"),
    ("Jerry", "Female", "Deputy Director"),
    ("Smith", "Male", "Staff")
]

customers = [
    ("Mary", "Female", "New York"),
    ("Joe", "Male", "Tokyo"),
    ("Lucy", "Female", "Beijing")
]

# 将employees中的数据写入employees工作表中
for row in employees:
    ws1.append(row)

# 将customers中的数据写入customers工作表中
for row in customers:
    ws2.append(row)

wb.save("example.xlsx")

示例二:使用公式计算工作表中的数据

以下示例将工作表中的数据进行求和,并在最后一行中给出结果:

from openpyxl import Workbook
from openpyxl.utils import get_column_letter
from openpyxl.worksheet.functions import sum_formula

wb = Workbook()
ws = wb.active
ws.title = "Data"

# 添加测试数据
for row in range(1, 11):
    for col in range(1, 4):
        _ = ws.cell(column=col,
                    row=row,
                    value=col + row)

# 添加公式
for col in range(1, 4):
    letter = get_column_letter(col)
    ws[f"{letter}11"] = sum_formula(f"{letter}1:{letter}10")

wb.save("example.xlsx")

以上代码中,我们使用了openpyxl.util.get_column_letter()函数将列数转换成字母,从而使我们能够使用公式函数openpyxl.worksheet.functions.sum_formula()对工作表中的数字进行求和。

希望本教程对您有所帮助!