Python Excel操作全面总结与案例解析

目录

 

第一章:Python Excel基础操作

1.1 环境搭建

1.2 Excel文件操作

1.3 Excel单元格操作

1.4 Excel行列操作

1.5 数据类型与公式

1.6 实战案例:学生信息管理系统

1.7 总结

第二章:Python Excel高级应用

2.1 数据处理

2.2 图表创建

2.3 自动化办公

2.4 实战案例:销售数据分析

2.5 总结

第三章:Python Excel实战案例解析

3.1 实战案例一:销售数据分析

3.2 实战案例二:财务报表自动化

3.3 实战案例三:数据处理脚本

3.4 实战案例四:数据同步脚本

3.5 实战案例五:自动化邮件发送

3.6 总结


 

第一章:Python Excel基础操作

在当今的数据处理和办公自动化领域,Python凭借其简洁易学的语法和强大的扩展库,已经成为了一种广泛使用的编程语言。特别是在Excel文件的处理上,Python提供了一系列的库,使得对Excel的操作变得异常简单。本章将带领读者进入Python Excel操作的世界,学习如何使用Python进行Excel文件的基础操作。

1.1 环境搭建

在进行Python Excel操作之前,首先需要确保你的计算机上已经安装了Python环境。你可以从Python的官方网站下载并安装最新版本的Python。安装完成后,你还需要安装一些Python的Excel操作库,如openpyxlxlrdxlwt

  • openpyxl是一个用于读写Excel 2010 xlsx/xlsm/xltx/xltm文件的库。
  • xlrd是一个用于读取Excel数据的库,支持xls和xlsx文件。
  • xlwt是一个用于写入Excel文件的库,只支持xls文件。

你可以使用pip命令来安装这些库:

pip install openpyxl xlrd xlwt

1.2 Excel文件操作

使用openpyxl库,你可以轻松地创建、读取、写入和保存Excel文件。

  • 创建一个新的Excel文件:
from openpyxl import Workbook

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

wb.save("example.xlsx")
  • 读取现有的Excel文件:
from openpyxl import load_workbook

wb = load_workbook("example.xlsx")
ws = wb["MySheet"]

print(ws["A1"].value)
  • 写入数据到Excel文件:
ws["A1"] = "Hello"
ws["A2"] = "World"

wb.save("example.xlsx")

1.3 Excel单元格操作

在Excel中,单元格是存储数据的基本单元。使用Python,你可以轻松地读取、写入和修改单元格的值。

  • 读取单元格的值:
cell_value = ws["A1"].value
print(cell_value)
  • 写入数据到单元格:
ws["A1"] = "New Value"
wb.save("example.xlsx")
  • 修改单元格的样式:
from openpyxl.styles import Font

font = Font(bold=True, size=16)
ws["A1"].font = font
wb.save("example.xlsx")

1.4 Excel行列操作

在Python中,你也可以轻松地对Excel的行列进行操作。

  • 读取一行的值:
row_values = [cell.value for cell in ws["1"]]
print(row_values)
  • 写入数据到一行:
ws["1"] = ["Item", "Price", "Quantity"]
wb.save("example.xlsx")
  • 读取一列的值:
col_values = [cell.value for cell in ws["A"]]
print(col_values)
  • 写入数据到一列:
for row in range(2, 5):
    ws[f"A{row}"] = f"Product {row}"
wb.save("example.xlsx")

1.5 数据类型与公式

在Excel中,数据类型和公式是非常重要的概念。Python的Excel库也提供了对这些功能的支持。

  • 设置单元格的数据类型:
from openpyxl import Workbook
from openpyxl.styles import NumberFormatDescriptor

wb = Workbook()
ws = wb.active

ws["A1"] = 1234.5
ws["A1"].number_format = NumberFormatDescriptor('0.00')

wb.save("example.xlsx")
  • 在单元格中计算公式:
ws["A3"] = "SUM(A1:A2)"
wb.save("example.xlsx")

1.6 实战案例:学生信息管理系统

现在,让我们通过一个简单的实战案例来展示如何使用Python对Excel进行操作。我们将创建一个Excel文件,用于存储学生的姓名、年龄和成绩,并计算每个学生的总分和平均分。

import openpyxl

# 创建一个新的工作簿和工作表
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "Student Information"

# 定义学生数据
students = [
    ["Name", "Age", "Score1", "Score2", "Total", "Average"],
    ["Alice", 20, 85, 92, None, None],
    ["Bob", 22, 78, 88, None, None],
    ["Charlie", 19, 90, 85, None, None]
]

# 将数据写入工作表
for row in students:
    ws.append(row)


# 计算总分和平均分
for row in range(2, len(students)):
    total = ws[f"C{row}"].value + ws[f"D{row}"].value
    average = total / 2
    ws[f"E{row}"] = total
    ws[f"F{row}"] = average

# 保存工作簿
wb.save("Student_Information.xlsx")

通过上述代码,我们创建了一个包含学生信息的Excel文件,并计算了每个学生的总分和平均分。这个案例展示了如何将Python的Excel操作应用于实际的数据处理任务中。

1.7 总结

本章介绍了Python Excel操作的基础知识,包括环境搭建、Excel文件操作、单元格操作、行列操作、数据类型与公式的处理,以及一个实战案例。通过这些内容的学习,读者应该能够掌握使用Python进行Excel操作的基本技巧,为进一步的学习和实践打下坚实的基础。在下一章中,我们将深入探讨Python Excel操作的高级应用,包括数据处理、图表创建和自动化办公等。

第二章:Python Excel高级应用

在第一章中,我们已经掌握了Python对Excel进行基础操作的方法。现在,让我们进一步探索Python在Excel操作中的高级应用,包括数据处理、图表创建和自动化办公等。

2.1 数据处理

在Excel中,数据处理是一项非常重要的功能。Python的Excel库提供了丰富的方法和属性,帮助我们高效地进行数据处理。

  • 筛选数据:
from openpyxl import load_workbook

wb = load_workbook("example.xlsx")
ws = wb.active

# 筛选年龄大于20岁的学生
filtered_data = []
for row in ws.iter_rows(min_row=2, max_row=ws.max_row, values_only=True):
    if row[1] > 20:
        filtered_data.append(row)

print(filtered_data)
  • 排序数据:
from openpyxl import Workbook
from openpyxl.utils import get_column_letter

wb = Workbook()
ws = wb.active

data = [
    ["Name", "Age", "Score"],
    ["Alice", 19, 85],
    ["Bob", 22, 88],
    ["Charlie", 20, 92]
]

for row in data:
    ws.append(row)

# 按年龄排序
sorted_data = sorted(ws.iter_rows(min_row=2, max_row=ws.max_row, values_only=True), key=lambda x: x[1])

# 清除原有数据
ws.delete_rows(2, ws.max_row)

# 写入排序后的数据
for row in sorted_data:
    ws.append(row)

wb.save("sorted_example.xlsx")

2.2 图表创建

Excel中的图表功能可以帮助我们更直观地展示数据。使用Python的Excel库,我们也可以轻松地创建各种图表。

  • 创建柱状图:
from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference

wb = Workbook()
ws = wb.active

data = [
    ["Category", "Value"],
    ["A", 10],
    ["B", 20],
    ["C", 30],
    ["D", 40]
]

for row in data:
    ws.append(row)

chart = BarChart()
chart.title = "Bar Chart"
chart.x_axis.title = "Category"
chart.y_axis.title = "Value"

cats = Reference(ws, min_col=1, min_row=2, max_row=5)
vals = Reference(ws, min_col=2, min_row=1, max_row=5)
chart.add_data(vals, titles_from_data=True)
chart.set_categories(cats)

ws.add_chart(chart, "E2")

wb.save("bar_chart_example.xlsx")
  • 创建折线图:
from openpyxl import Workbook
from openpyxl.chart import LineChart, Reference

wb = Workbook()
ws = wb.active

data = [
    ["Month", "Sales"],
    ["Jan", 200],
    ["Feb", 250],
    ["Mar", 300],
    ["Apr", 350],
    ["May", 400]
]

for row in data:
    ws.append(row)

chart = LineChart()
chart.title = "Line Chart"
chart.x_axis.title = "Month"
chart.y_axis.title = "Sales"

cats = Reference(ws, min_col=1, min_row=2, max_row=5)
vals = Reference(ws, min_col=2, min_row=1, max_row=5)
chart.add_data(vals, titles_from_data=True)
chart.set_categories(cats)

ws.add_chart(chart, "E2")

wb.save("line_chart_example.xlsx")

2.3 自动化办公

Python在自动化办公方面也具有很大的优势。通过Python的Excel库,我们可以轻松地实现数据的批量处理、报告的自动生成等功能。

  • 批量处理数据:
import openpyxl
from openpyxl.utils import get_column_letter

wb = openpyxl.load_workbook("example.xlsx")
ws = wb.active

# 将所有学生的成绩提高10分
for row in range(2, ws.max_row + 1):
    cell = ws[f"C{row}"]
    cell.value = cell.value + 10

wb.save("updated_example.xlsx")
  • 自动生成报告:
import openpyxl
from openpyxl.chart import BarChart, Reference
from openpyxl.drawing.image import Image

wb = openpyxl.Workbook()
ws = wb.active

# 添加数据
data = [
    ["Category", "Value"],
    ["A", 10],
    ["B", 20],
    ["C", 30],
    ["D", 40]
]

for row in data:
    ws.append(row)

# 创建图表
chart = BarChart()
chart.title = "Bar Chart"
chart.x_axis.title = "Category"
chart.y_axis.title = "Value"

cats = Reference(ws, min_col=1, min_row=2, max_row=5)
vals = Reference(ws, min_col=2, min_row=1, max_row=5)
chart.add_data(vals, titles_from_data=True)
chart.set_categories(cats)

# 将图表添加到工作表中
ws.add_chart(chart, "E2")

# 添加公司logo
img = Image("company_logo.png")
ws.add_image(img, "A1")

# 保存报告
wb.save("report.xlsx")

通过上述代码,我们创建了一个包含图表和公司logo的Excel报告,这个报告可以自动生成,极大地提高了办公效率。

2.4 实战案例:销售数据分析

在本节中,我们将通过一个实战案例来展示如何使用Python对销售数据进行高级分析。我们将读取一个包含销售数据的Excel文件,然后进行数据清洗、分析,并生成一个包含关键数据和图表的报告。

import openpyxl
from openpyxl.chart import LineChart, Reference

# 读取销售数据
wb = openpyxl.load_workbook("sales_data.xlsx")
ws = wb.active

# 数据清洗
cleaned_data = []
for row in ws.iter_rows(min_row=2, values_only=True):
    if row[1] is not None and row[2] is not None:
        cleaned_data.append(row)

# 分析:计算每月的总销售额
monthly_sales = {}
for row in cleaned_data:
    month = row[0].strftime("%Y-%m")
    sales = row[2]
    if month in monthly_sales:
        monthly_sales[month] += sales
    else:
        monthly_sales[month] = sales

# 创建新的工作表
ws_analysis = wb.create_sheet(title="Sales Analysis")

# 写入分析结果
ws_analysis.append(["Month", "Total Sales"])
for month, sales in monthly_sales.items():
    ws_analysis.append([month, sales])

# 创建折线图
chart = LineChart()
chart.title = "Monthly Sales Analysis"
chart.x_axis.title = "Month"
chart.y_axis.title = "Total Sales"

cats = Reference(ws_analysis, min_col=1, min_row=2, max_row=len(monthly_sales) + 1)
vals = Reference(ws_analysis, min_col=2, min_row=1, max_row=len(monthly_sales) + 1)
chart.add_data(vals, titles_from_data=True)
chart.set_categories(cats)

ws_analysis.add_chart(chart, "D2")

# 保存分析报告
wb.save("sales_analysis_report.xlsx")

通过上述代码,我们读取了一个销售数据的Excel文件,进行了数据清洗和分析,并生成了一份包含折线图的报告,展示了每月的总销售额变化。

2.5 总结

本章介绍了Python Excel操作的高级应用,包括数据处理、图表创建和自动化办公。通过这些内容的学习,读者应该能够掌握使用Python进行Excel高级操作的方法,并能够将这些技术应用于实际的数据分析和办公自动化任务中。在下一章中,我们将通过一些实战案例,进一步巩固和深化这些技能。

第三章:Python Excel实战案例解析

在前两章中,我们学习了Python Excel操作的基础知识和高级应用。现在,让我们通过一些实战案例来巩固和深化这些技能。本章将介绍几个典型的实战案例,包括数据分析、报表自动化和数据处理脚本。

3.1 实战案例一:销售数据分析

在这个案例中,我们将读取一个包含销售数据的Excel文件,然后进行数据清洗、分析,并生成一个包含关键数据和图表的报告。

import openpyxl
from openpyxl.chart import LineChart, Reference

# 读取销售数据
wb = openpyxl.load_workbook("sales_data.xlsx")
ws = wb.active

# 数据清洗
cleaned_data = []
for row in ws.iter_rows(min_row=2, values_only=True):
    if row[1] is not None and row[2] is not None:
        cleaned_data.append(row)

# 分析:计算每月的总销售额
monthly_sales = {}
for row in cleaned_data:
    month = row[0].strftime("%Y-%m")
    sales = row[2]
    if month in monthly_sales:
        monthly_sales[month] += sales
    else:
        monthly_sales[month] = sales

# 创建新的工作表
ws_analysis = wb.create_sheet(title="Sales Analysis")

# 写入分析结果
ws_analysis.append(["Month", "Total Sales"])
for month, sales in monthly_sales.items():
    ws_analysis.append([month, sales])

# 创建折线图
chart = LineChart()
chart.title = "Monthly Sales Analysis"
chart.x_axis.title = "Month"
chart.y_axis.title = "Total Sales"

cats = Reference(ws_analysis, min_col=1, min_row=2, max_row=len(monthly_sales) + 1)
vals = Reference(ws_analysis, min_col=2, min_row=1, max_row=len(monthly_sales) + 1)
chart.add_data(vals, titles_from_data=True)
chart.set_categories(cats)

ws_analysis.add_chart(chart, "D2")

# 保存分析报告
wb.save("sales_analysis_report.xlsx")

3.2 实战案例二:财务报表自动化

在这个案例中,我们将读取一个包含财务数据的Excel文件,然后进行数据汇总和格式设置,最后生成一个格式化的财务报表。

import openpyxl
from openpyxl.styles import Font, Alignment

# 读取财务数据
wb = openpyxl.load_workbook("financial_data.xlsx")
ws = wb.active

# 数据汇总
summary_data = {}
for row in ws.iter_rows(min_row=2, values_only=True):
    account = row[0]
    amount = row[1]
    if account in summary_data:
        summary_data[account] += amount
    else:
        summary_data[account] = amount

# 创建新的工作表
ws_summary = wb.create_sheet(title="Financial Summary")

# 写入汇总结果
ws_summary.append(["Account", "Amount"])
for account, amount in summary_data.items():
    ws_summary.append([account, amount])

# 设置报表格式
header_font = Font(bold=True)
header_alignment = Alignment(horizontal="center", vertical="center")
for cell in ws_summary["1:1"]:
    cell.font = header_font
    cell.alignment = header_alignment

# 保存财务报表
wb.save("financial_summary_report.xlsx")

3.3 实战案例三:数据处理脚本

在这个案例中,我们将编写一个Python脚本,用于读取一个包含客户信息的Excel文件,然后进行数据验证和清洗,最后将清洗后的数据保存到一个新的Excel文件中。

import openpyxl
import re

# 读取客户数据
wb = openpyxl.load_workbook("customer_data.xlsx")
ws = wb.active

# 数据清洗
cleaned_data = []
for row in ws.iter_rows(min_row=2, values_only=True):
    name = row[0]
    email = row[1]
    phone = row[2]

    # 验证电子邮件格式
    if re.match(r"[^@]+@[^@]+\.[^@]+", email):
        cleaned_email = email
    else:
        cleaned_email = "Invalid Email"

    # 验证电话号码格式
    if re.match(r"\d{3}-\d{3}-\d{4}", phone):
        cleaned_phone = phone
    else:
        cleaned_phone = "Invalid Phone"

    cleaned_data.append([name, cleaned_email, cleaned_phone])

# 创建新的工作簿和工作表
wb_cleaned = openpyxl.Workbook()
ws_cleaned = wb_cleaned.active
ws_cleaned.title = "Cleaned Customer Data"

# 写入清洗后的数据
ws_cleaned.append(["Name", "Email", "Phone"])
for row in cleaned_data:
    ws_cleaned.append(row)

# 保存清洗后的数据
wb_cleaned.save("cleaned_customer_data.xlsx

3.4 实战案例四:数据同步脚本

在这个案例中,我们将编写一个Python脚本,用于同步两个Excel文件中的数据。脚本将比较两个文件中的数据,并将更新的数据从源文件复制到目标文件中。

import openpyxl

# 定义源文件和目标文件
source_file = "source_data.xlsx"
target_file = "target_data.xlsx"

# 加载源文件和目标文件
source_wb = openpyxl.load_workbook(source_file)
target_wb = openpyxl.load_workbook(target_file)

# 获取源文件和目标文件的工作表
source_ws = source_wb.active
target_ws = target_wb.active

# 假设我们使用姓名作为唯一标识符
identifier_column = 'A'

# 创建一个字典来存储目标文件中的数据
target_data = {}
for row in target_ws.iter_rows(min_row=2, values_only=True):
    identifier = row[0]
    target_data[identifier] = row

# 同步数据
for row in source_ws.iter_rows(min_row=2, values_only=True):
    identifier = row[0]
    if identifier in target_data:
        # 更新现有数据
        target_row = target_data[identifier]
        for i, value in enumerate(row):
            target_row[i] = value
    else:
        # 添加新数据
        target_ws.append(row)

# 保存目标文件
target_wb.save(target_file)

3.5 实战案例五:自动化邮件发送

在这个案例中,我们将结合Python的Excel操作和邮件发送功能,编写一个脚本来自动化发送包含Excel附件的邮件。

import openpyxl
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
from email.utils import COMMASPACE
from email import encoders

# 邮件发送函数
def send_mail(send_from, send_to, subject, text, files=None):
    assert isinstance(send_to, list)

    msg = MIMEMultipart()
    msg['From'] = send_from
    msg['To'] = COMMASPACE.join(send_to)
    msg['Subject'] = subject

    msg.attach(MIMEText(text))

    for file in files or []:
        with open(file, "rb") as fil:
            part = MIMEBase('application', 'octet-stream')
            part.set_payload(fil.read())
            encoders.encode_base64(part)
            part.add_header('Content-Disposition', f"attachment; filename= {file}")
            msg.attach(part)

    with smtplib.SMTP('smtp.gmail.com', 587) as server:
        server.starttls()
        server.login("youremail@gmail.com", "yourpassword")
        server.sendmail(send_from, send_to, msg.as_string())
        server.close()

# 创建Excel报告
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "Report"
# ... 添加数据和格式化 ...

# 保存报告
report_file = "report.xlsx"
wb.save(report_file)

# 发送邮件
send_from = "youremail@gmail.com"
send_to = ["recipient1@example.com", "recipient2@example.com"]
subject = "Monthly Report"
text = "Please find the attached monthly report."
files = [report_file]

send_mail(send_from, send_to, subject, text, files)

在这个案例中,我们首先创建了一个Excel报告,然后使用SMTP服务器发送一个包含该报告附件的邮件。请注意,为了使用SMTP服务器,你需要替换send_fromsend_toserver.login中的凭据为你自己的电子邮件地址和密码。

3.6 总结

本章通过几个实战案例,展示了Python Excel操作在实际应用中的强大功能。这些案例涵盖了数据分析、报表自动化、数据处理脚本和自动化邮件发送等多个方面。通过这些案例的学习,读者应该能够更好地理解Python Excel操作的应用,并能够将这些技术应用于自己的实际工作中。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值