操作Excel不止openpyxl📊全网最全 Python 操作 Excel 大法来袭,绝对值得收藏!✨

1,331 阅读24分钟

开篇小故事:日常工作中的 Excel 问题

“又是 Excel!怎么又是 Excel!”

每当我在处理一些需要导入和导出数据的任务时,Excel 总是让我又爱又恨。作为一个程序员,明明知道这个工具是为数据分析师量身定做的,结果一不小心就被 Excel 的各种问题卡住了。特别是当 Excel 文件里有大量数据或者复杂的格式时,每次打开、编辑、保存都会出现各种意想不到的问题——例如乱码、格式错乱、甚至无法正确读取某些特殊的公式……

于是,我忍无可忍,决定让 Python 来解救我!🎉

好了,废话不多说。今天我们要聊的正是:如何利用 Python 操作 Excel 文件。Python 可不是在这方面默默无闻,它有好几个功能强大的库可以帮我们轻松搞定 Excel 文件的读取、写入、修改等操作。那么,到底有哪些库值得我们使用呢?哪个库最适合自己的项目呢?我们通过一张表格进行对比,帮助你做出选择!


Python 操作 Excel 库大比拼

图片

表格给你做好了,剩下的怎么选参考下面这几句话:

  • 数据量大小:大数据集推荐使用pandas
  • 格式要求:需要精确控制格式选择openpyxl
  • 兼容性:处理旧版Excel文件选择xlrd/xlwt
  • 自动化需求:需要Excel自动化操作选择xlwings
  • 简单任务:简单的读写操作可以使用pyexcel
  • Python版本:根据项目的Python版本选择兼容的库
  • 预算考虑:大多数库都是免费的,但如果需要xlwings的高级功能需要付费库名称

openpyxl:最受欢迎的 Excel 操作库 🏆

一、简介

openpyxl 是一个可以读取、写入和修改 Excel 文件(即.xlsx 格式)的 Python 库。它非常适合用来处理那些需要在 Excel 文件中进行数据分析、报表生成等工作的场景。你可以通过它轻松实现批量读取、写入数据、设置格式、绘制图表、甚至进行公式计算等操作。简单来说,它是你的 Excel 好伙伴!📊

官方文档

官方文档地址:openpyxl documentation

文档中详细介绍了库的各个功能,包括基本的读取写入操作、单元格格式设置、样式应用、图表绘制等。如果你有更深入的需求,直接去翻文档就对了!🧐

图片


二、安装教程

我们安装openpyxl 简直轻松得像喝水一样,使用pip 安装:

pip install openpyxl

🎉 就这么简单!如果你使用的是 Jupyter Notebook 也可以直接在 Notebook 中运行:

!pip install openpyxl

安装完成后,你就可以开始愉快地使用openpyxl 来操作 Excel 文件啦!📝


三、使用介绍

现在,我们来进入正题,了解下openpyxl 库的基本用法。准备好了吗?Let's go!🚀

1. 读取Excel文件

我们先来看一个简单的读取 Excel 文件的例子。假设你有一个名为data.xlsx 的 Excel 文件,里面有一些数据:

from openpyxl import load_workbook

# 加载工作簿
wb = load_workbook('data.xlsx')

# 选择活跃的工作表
ws = wb.active

# 打印某个单元格的内容
print(ws['A1'].value)

上面的代码通过load_workbook 打开了 Excel 文件,ws = wb.active 选中了活动的工作表(一般就是第一个工作表)。然后,我们打印了 A1 单元格的内容。是不是超简单!💡

2. 写入Excel文件

接下来,看看如何向 Excel 写入数据。假设我们要向data.xlsx 文件的 A1 单元格写入“Hello, Python!”:

from openpyxl import load_workbook

# 加载工作簿
wb = load_workbook('data.xlsx')

# 选择活跃的工作表
ws = wb.active

# 写入数据
ws['A1'] = 'Hello, Python!'

# 保存工作簿
wb.save('data.xlsx')

是不是很像在 Excel 中直接修改内容呀?这就是openpyxl 的魔力!🔮

3. 遍历Excel表格数据

想批量读取多个单元格的数据?那我们可以使用iter_rows() 方法来遍历每一行数据。比如,读取前 3 行的数据:

from openpyxl import load_workbook

# 加载工作簿
wb = load_workbook('data.xlsx')

# 选择工作表
ws = wb.active

# 遍历前 3 行数据
for row in ws.iter_rows(min_row=1, max_row=3, values_only=True):
    print(row)

iter_rows 方法会返回每一行的数据,values_only=True 参数表示我们只关心单元格的值而不需要其他元数据。


四、实战演练

到了最精彩的部分啦!🥳 让我们通过一个小案例来实现更有趣的功能。

案例:自动生成一个简单的成绩单

假设我们要自动生成一个简单的成绩单,包含学生姓名、学号、科目以及成绩等信息。结果生成一个 Excel 表格,数据如下:

学生姓名学号科目成绩
张三202301数学95
李四202302英语88
王五202303物理91

好啦,接下来我们就用openpyxl 来生成这个成绩单!

from openpyxl import Workbook

# 创建一个新的工作簿
wb = Workbook()

# 选择活动的工作表
ws = wb.active
ws.title"成绩单"

# 添加表头
ws.append(["学生姓名", "学号", "科目", "成绩"])

# 添加学生成绩
students = [
    ("张三""202301""数学"95),
    ("李四""202302""英语"88),
    ("王五""202303""物理"91)
]

# 将数据逐行添加
for student in students:
    ws.append(student)

# 保存工作簿
wb.save("成绩单.xlsx")

运行这段代码后,Excel 文件成绩单.xlsx 就会自动生成并保存到当前目录啦!🎓🎉 你还可以根据需要对表格进行更多操作,比如设置字体样式、单元格边框、单元格填充颜色等。下面是一个添加单元格样式的例子:

添加单元格样式

from openpyxl.styles import Font, Color, Alignment

# 设置字体加粗,字体颜色为红色
bold_font = Font(bold=True, color="FF0000")
# 设置单元格居中
center_alignment = Alignment(horizontal="center", vertical="center")

# 设置 A1 单元格样式
ws['A1'].font = bold_font
ws['A1'].alignment = center_alignment

# 保存文件
wb.save("成绩单_样式.xlsx")

看,Excel 文件中 A1 单元格的字体变成了红色并且加粗,且内容居中显示!🔥

五、小结

通过上面的介绍,你应该对 openpyxl 库有了一个全面的了解。这个库不仅能让你轻松地读取、写入 Excel 文件,还能处理更复杂的操作,如设置单元格样式、添加公式、绘制图表等。👩‍💻


pandas:数据分析的首选库 📊

一、简介:

pandas 是一个开源的 Python 数据分析库,它的名字来源于 "panel data"(面板数据),专门用来处理和分析结构化数据,尤其擅长表格数据。通过pandas,你可以轻松地读取、清洗、处理、分析各种数据,包括 Excel、CSV、SQL、JSON 等多种格式的数据。

图片

官方文档:

pandas 官方文档
文档里有详细的操作说明,记得可以时常去看看哦,它就像是你学习数据分析的"救命稻草"!🧐


二、安装教程

如果你还没有安装pandas,那你就太落后了!(开个玩笑,不要介意哈 😆)安装非常简单,只需要通过 Python 的包管理工具pip 来安装。打开你的命令行窗口,输入以下命令:

pip install pandas

等着它自顾自地安装完毕,不用担心,速度快得就像你在赶火车一样!🚆

小提示:有时候可能需要加上--user 参数,避免权限问题:

pip install --user pandas

安装完了之后,别忘了检查一下是否安装成功!在 Python 中输入:

import pandas as pd

如果没有报错,那就成功了!👍


三、使用介绍

说了这么多,肯定有同学问了,pandas 这个库能干什么?最常见的操作之一就是读取和写入 Excel 文件,因为在工作中很多数据都是存储在 Excel 中的。那我们就从这里入手,来看看怎么用pandas 轻松操作 Excel 吧!

1. 读取 Excel 文件

我们来使用pandas 中的read_excel 函数读取 Excel 文件。首先,你需要安装一个额外的库——openpyxl,它可以让pandas 读取.xlsx 格式的文件。可以通过以下命令安装:

pip install openpyxl

一旦安装好了,就可以开始读取 Excel 文件了!假设你有一个名为data.xlsx 的 Excel 文件,代码如下:

import pandas as pd

# 读取 Excel 文件
df = pd.read_excel('data.xlsx')

# 显示数据
print(df)

read_excel 函数参数:

  • sheet_name:指定读取哪一张工作表。默认读取第一张工作表。如果你想读取第二张或其他的工作表,可以通过sheet_name=1 或sheet_name='Sheet2' 来指定。
  • header:指定标题行,默认为0,表示第一行是标题。

2. 写入 Excel 文件

pandas 还可以将你处理后的数据写回 Excel 文件,简直不要太方便!你只需要使用to_excel 函数。例如,将数据框df 写入output.xlsx

# 写入 Excel 文件
df.to_excel('output.xlsx', index=False)

小提醒:参数index=False 表示不把索引列也写入 Excel。如果你想保留索引,可以去掉这个参数或者设置为True


四、实战演练

让我们来一场小小的实战演练!假设我们有一份 Excel 文件,包含一些学生成绩数据(students.xlsx):

姓名数学英语语文
小明859092
小红889491
小强788279

我们要做什么呢?简单!我们用pandas 来读取这份文件,计算每个学生的平均分,然后保存回 Excel!

  1. 读取 Excel 文件
import pandas as pd

# 读取 Excel 文件
df = pd.read_excel('students.xlsx')

# 打印原始数据
print("原始数据:")
print(df)
  1. 计算平均分
# 计算平均分
df['平均分'] = df[['数学''英语''语文']].mean(axis=1)

# 打印包含平均分的新数据
print("新增平均分:")
print(df)
  1. 写入 Excel 文件
# 将数据写回新的 Excel 文件
df.to_excel('students_with_avg.xlsx', index=False)

print("处理完的数据已保存为 'students_with_avg.xlsx'")

五、小结

  1. pandas 是处理数据的神器,不仅支持 Excel 文件,还能读取 CSV、SQL 等格式,强大到不行!
  2. 使用read_excel 和to_excel 读写 Excel 文件时,记得安装openpyxl 库。
  3. 在使用pandas 处理数据时,一定要善用它的DataFrame 结构,它可是最强的数据管理神器!
  4. 遇到问题时,可以随时去官方文档找找答案,别让自己孤军奋战!😎

xlrd:专注于旧版.xls 格式 📚

一、简介

xlrd 是一个 Python 库,用于读取 Excel 文件(.xls 和.xlsx 格式)。如果你需要从 Excel 中提取数据,或者你是个数据分析师/程序员,整天和 Excel 打交道,xlrd 就是你的好伙伴!👯‍♀️

注意:  从xlrd 版本 2.0 开始,它只支持.xls 格式,不再支持.xlsx 格式了!但没关系,解决方案是使用openpyxl 来处理.xlsx 文件。xlrd 专注于.xls 文件,但还是非常好用的!⚡

图片

官方文档

  • 你可以在这里找到xlrd 的官方文档:xlrd.readthedocs.io/en/latest/
  • 文档里会有详细的安装教程、API 说明以及更多的使用案例。你可以在这里了解所有xlrd 的功能和特性。

二、安装教程

安装xlrd 非常简单,只需要使用pip 命令就可以了!🎉

在你的终端中输入以下命令:

pip install xlrd

如果你用的是python3,可以试试:

pip3 install xlrd

安装完毕后,试试运行一下 Python,导入xlrd

import xlrd
print(xlrd.__version__)

如果没有报错,说明你成功安装了xlrd!👏


三、使用介绍

现在我们来看看如何用xlrd 打开和读取 Excel 文件。🎬

1 打开 Excel 文件

首先,我们要打开一个 Excel 文件。假设我们有一个名为sample.xls 的文件,内容大致如下:

姓名年龄城市
小明20北京
小红22上海
小李25广州
import xlrd

# 打开 Excel 文件
workbook = xlrd.open_workbook('sample.xls')

# 打印出所有工作表的名称
print(workbook.sheet_names())  # ['Sheet1']

# 获取第一个工作表
sheet = workbook.sheet_by_index(0)

2 读取 Excel 内容

一旦打开了 Excel 文件并获取了工作表,我们就可以开始读取数据啦!例如,读取表格中的单元格:

# 获取表格中第一行第一列的值
first_cell = sheet.cell_value(00)  # '小明'
print(first_cell)

# 获取第二行第二列的值
second_cell = sheet.cell_value(11)  # 22
print(second_cell)

3 读取整行或整列

有时我们需要一次性读取一行或一列的数据。xlrd 提供了简单的方法来实现这一点。

# 获取第一行数据(索引从0开始)
first_row = sheet.row_values(0)  # ['小明', 20, '北京']
print(first_row)

# 获取第一列数据
first_col = sheet.col_values(0)  # ['小明', '小红', '小李']
print(first_col)

4 获取表格的尺寸

如果你想知道表格的大小(行数、列数),可以使用nrows 和ncols 属性:

# 获取表格的行数和列数
rows = sheet.nrows
cols = sheet.ncols
print(f"行数:{rows}, 列数:{cols}")

四、实战演练

我们来个实战演练!假设你有一个包含学生成绩单的 Excel 文件,格式如下:

姓名数学成绩英语成绩语文成绩
小明908592
小红889185
小李958994

我们将使用xlrd 来读取并计算每个学生的平均成绩。💡

1 创建score.xlsx 文件

首先,确保你有一个类似于上面这样的成绩单文件。如果没有,可以用 Excel 自己创建一个,或者使用以下 Python 代码生成它(通过openpyxl):

import openpyxl

wb = openpyxl.Workbook()
sheet = wb.active
sheet.append(["姓名""数学成绩""英语成绩""语文成绩"])
sheet.append(["小明"908592])
sheet.append(["小红"889185])
sheet.append(["小李"958994])

wb.save("score.xlsx")

2 使用xlrd 读取成绩并计算平均分

import xlrd

# 打开成绩单文件
workbook = xlrd.open_workbook('score.xlsx')
sheet = workbook.sheet_by_index(0)

# 获取列索引
name_col0
math_col1
english_col2
chinese_col3

# 遍历所有学生的成绩并计算平均分
for row_idx in range(1, sheet.nrows):  # 从1开始跳过表头
    name = sheet.cell_value(row_idx, name_col)
    math_score = sheet.cell_value(row_idx, math_col)
    english_score = sheet.cell_value(row_idx, english_col)
    chinese_score = sheet.cell_value(row_idx, chinese_col)
    
    # 计算平均分
    avg_score = (math_score + english_score + chinese_score) / 3
    print(f"{name} 的平均成绩是:{avg_score:.2f}")

输出:

小明 的平均成绩是:89.00 小红 的平均成绩是:88.00 小李 的平均成绩是:92.67

五、小结

我们通过几个简单的例子学习了 xlrd 库的基本用法,掌握了如何读取 Excel 文件中的数据,如何获取特定单元格的值、整行或整列数据,并实现了一个计算学生平均成绩的小项目。🚀

记住:xlrd 是一个非常强大的工具,尤其适合你处理 .xls 格式的 Excel 文件。如果你需要处理 .xlsx 文件,可以尝试用 openpyxl 或 pandas。😎


xlwt:写.xls 格式的专用库 🖊️

一、简介

xlwt 是一个Python库,专门用来写入Excel文件,尤其是对 .xls 格式的文件有很好的支持。它可以让你像操作Excel一样,轻松地在Python中创建、编辑、保存工作簿和工作表,填充各种格式的单元格数据。虽然现在很多人更习惯使用openpyxl 来操作.xlsx 文件,但xlwt 依然在一些老旧项目中发挥着重要作用。

图片

xlwt 的主要功能

  • 创建新的.xls 文件。
  • 向工作表中插入数据、公式、格式。
  • 设置单元格的字体、颜色、边框、对齐方式等。
  • 支持读取和修改已有的.xls 文件。

官方文档

  • 你可以在这里找到 xlwd 的官方文档:xlwt.readthedocs.io/en/latest/
  • 当你需要处理的Excel文件是.xls 格式时,xlwt 非常合适。
  • 如果你需要快速创建一些格式化的报告,或者对已有的.xls 文件进行简单修改,xlwt 也能满足你的需求。

二、安装教程

打开你的终端或命令行工具,输入以下命令:

pip install xlwt

安装成功后,你就可以在Python中导入并使用它啦!

import xlwt

三、使用介绍

接下来,咱们来看看如何使用xlwt 来创建一个简单的Excel文件,填充一些数据,并进行格式化。让你的Excel文件既好看又好用!💅

1 创建一个工作簿

创建工作簿是你创建任何Excel文件的第一步:

import xlwt

# 创建一个工作簿
workbook = xlwt.Workbook()

2 创建工作表

有了工作簿,接下来我们要创建一个工作表:

# 创建一个工作表,名字是“Sheet1”
sheet = workbook.add_sheet("Sheet1")

3 向单元格写入数据

工作表已经创建好,现在我们来给它填充一些数据:

# 向第1行第1列的单元格写入数据
sheet.write(00"Hello, Excel!")
sheet.write(10"This is xlwt!")

★ 

记住,write 方法中的第一个参数是行号,第二个参数是列号,第三个是你想写入的数据。请注意,xlwt 使用的是从0开始的索引(所以行列都从0算起)。🧮

4 设置单元格格式

既然要让Excel文件既好看又实用,当然得给单元格设置一些格式了。这里,我们可以给单元格设置字体、对齐方式、边框和背景颜色等。

# 创建一个字体对象
font = xlwt.Font()
font.boldTrue# 设置字体加粗
font.colour_index2# 设置字体颜色为红色

# 创建一个对齐对象
alignment = xlwt.Alignment()
alignment.horz = xlwt.Alignment.HORZ_CENTER  # 水平居中对齐

# 创建一个样式对象
style = xlwt.XFStyle()
style.font = font
style.alignment = alignment

# 向第1行第2列写入数据并应用样式
sheet.write(0, 1, "Formatted Text", style)

★ 

在这里,我们给单元格加粗了红色字体,并且水平居中对齐了文本。是不是很酷?😎

5 保存工作簿

所有的内容设置好后,别忘了保存工作簿!

# 保存工作簿
workbook.save("example.xls")

★ 

小贴士:保存的文件是 .xls 格式,这也是 xlwt 的默认格式。如果需要处理 .xlsx 文件,可以考虑使用 openpyxl 或 xlsxwriter


四、实战演练

我们来做个简单的实战练习,制作一个带有格式的学生成绩单,包含学生姓名、科目、成绩等信息,并加上一些格式。

import xlwt

# 创建工作簿
workbook = xlwt.Workbook()

# 创建工作表
sheet = workbook.add_sheet("成绩单")

# 设置标题样式
title_font = xlwt.Font()
title_font.boldTrue
title_style = xlwt.XFStyle()
title_style.font = title_font

# 设置列标题
sheet.write(0, 0, "学生姓名", title_style)
sheet.write(0, 1, "语文成绩", title_style)
sheet.write(0, 2, "数学成绩", title_style)
sheet.write(0, 3, "英语成绩", title_style)

# 填充学生成绩数据
students = [
    ("张三"908592),
    ("李四"788884),
    ("王五"827980)
]

# 填充数据
for i, student in enumerate(students, start=1):
    sheet.write(i, 0, student[0])
    sheet.write(i, 1, student[1])
    sheet.write(i, 2, student[2])
    sheet.write(i, 3, student[3])

# 设置总成绩列标题
sheet.write(0, 4, "总成绩", title_style)

# 计算每个学生的总成绩并填充
for i in range(1, len(students) + 1):
    total_score = students[i-1][1] + students[i-1][2] + students[i-1][3]
    sheet.write(i, 4, total_score)

# 保存文件
workbook.save("student_scores.xls")

print("成绩单已经生成!🎉")

运行这个程序,你会得到一个格式化的Excel成绩单,里面包含了学生姓名、各科成绩以及总成绩。是不是很方便!📈


五、小结

xlwt 是一个非常实用的库,适合用于生成和操作.xls 格式的Excel文件。它支持基本的数据写入、格式设置(如字体、颜色、对齐、边框等),对于一些简单的Excel操作非常高效。虽然现在.xlsx 格式更为流行,但如果你只需要处理.xls 文件,xlwt 依然是一个不错的选择。💡


xlwings:在 Python 与 Excel 之间架起桥梁的神器✨

一、简介

xlwings 是一个非常强大的 Python 库,它能让你轻松地操控 Excel,直接在 Excel 中运行 Python 代码,也能将 Excel 文件中的数据导入 Python。简而言之,它就是 Python 和 Excel 的"亲密助手",你完全可以把它当作 Excel 操作的超能力工具。

图片

核心功能:

  • 操作 Excel 文件:可以读取、修改、写入 Excel 文件。
  • 数据交换:方便地将 Excel 数据与 Python 中的变量互相传递。
  • 内置 Excel 公式支持:可以在 Excel 中直接运行 Python 脚本。
  • Excel 图表生成:自动生成图表和其他图形化内容。
  • 和 Pandas 兼容:Pandas DataFrame 可以轻松读写到 Excel。

官方文档:

  • xlwings 官方文档:docs.xlwings.org/en/stable/
  • 文档里有详细的安装方法、示例代码和一些高级用法,强烈推荐大家去看。😎

二、安装教程

xlwings 的安装非常简单,就像吃个小蛋糕一样(当然,要是你不会做蛋糕,别担心,Python 为你解决了所有问题 😋)。

1. 使用pip 安装:

pip install xlwings

如果你使用的是Anaconda,可以直接在 Conda 环境中安装:

conda install -c conda-forge xlwings

2. 安装完成后,验证是否安装成功:

import xlwings as xw
print(xw.__version__)

如果你能看到版本号,恭喜你!安装成功,🎉🎉🎉,接下来就是大显身手的时候了!


三、使用介绍

在我们进入实战之前,先来简单了解一下如何用xlwings 操作 Excel。

1.打开一个 Excel 文件

import xlwings as xw

# 打开 Excel
app = xw.App(visible=True)  # visible=True 表示 Excel 窗口可见
workbook = app.books.open('你的Excel文件.xlsx')  # 打开一个已存在的文件

2.读取和修改单元格

# 读取指定单元格内容
sheet = workbook.sheets['Sheet1']  # 获取名为 'Sheet1' 的工作表
value = sheet.range('A1').value  # 读取 A1 单元格的值
print(value)

# 修改指定单元格内容
sheet.range('A2').value'Hello from xlwings!'  # 在 A2 单元格写入内容

3.写入多个单元格(批量操作)

import pandas as pd

# 创建一个 Pandas DataFrame
data = pd.DataFrame({
    'Name': ['Alice''Bob''Charlie'],
    'Age': [253035]
})

# 将 DataFrame 写入 Excel
sheet.range('A1').value = data

4.运行 Python 代码并在 Excel 中显示结果

你可以直接在 Excel 中运行 Python 代码,并将结果展示在 Excel 表格中。这对于数据分析和自动化操作来说非常方便!


四、实战演练

现在让我们通过一个简单的实战来看看如何运用xlwings 来自动化填报 Excel 数据。

假设你有一个 Excel 表格,每个月需要记录不同员工的考勤情况。现在我们需要自动化填报一些数据。

1.首先创建一个 Excel 文件(例如attendance.xlsx ,内容如下:

姓名1号2号3号4号5号
Alice
Bob
Charlie

2.Python 脚本自动填报数据

import xlwings as xw
import random

# 打开 Excel 文件
app = xw.App(visible=True)
workbook = app.books.open('attendance.xlsx')
sheet = workbook.sheets['Sheet1']

# 填报数据
for i in range(1, 4):  # 从第 1 行到第 3 行(员工)
    for j in range(1, 6):  # 从第 1 列到第 5 列(日期)
        # 随机填入出勤数据(假设随机出勤,1为出勤,0为缺席)
        sheet.range(i + 1, j + 1).value = random.choice([01])

# 保存文件
workbook.save('attendance_filled.xlsx')
workbook.close()

这段代码会为每个员工的每天考勤情况随机填充0 或1,然后保存为新的 Excel 文件——attendance_filled.xlsx

3.运行脚本后,Excel 文件将自动填充考勤数据,就像魔术一样!🎩✨


五、小结

xlwings 是一个非常强大的工具,它不仅能帮助我们自动化处理 Excel 文件,还能让我们在 Excel 中运行 Python 代码,极大地提升了工作效率和自动化程度。🎯

通过今天的介绍和示例,你应该能初步掌握xlwings 的基本用法了。接下来,你可以在项目中发挥创意,去尝试更多的功能,比如图表生成、动态更新数据等等。


额外的技巧:利用xlwings 提升工作效率 🚀

  • 与 Pandas 配合使用:你可以将 Pandas DataFrame 直接写入 Excel,极大地提升数据分析和可视化的效率。
  • 自动化报告:如果你每天需要生成报告,xlwings 可以帮你通过 Python 自动化这个过程,告别手动操作!
  • Excel 与 Python 双向互动:不仅 Python 可以修改 Excel 数据,Excel 还可以调用 Python 脚本进行更复杂的计算,简直是"Python+Excel"的黄金搭档!

pyexcel:数据你来搞,剩下的细节交给我 🍰

一、简介

PyExcel 是一个简单而强大的库,用于读取、写入和操作 Excel 文件(.xls.xlsx.ods 等)。它的主要目标是简化数据表格的操作,避免让你陷入那些繁琐的 Excel 处理细节。你只需要关注数据,PyExcel 会为你做剩下的事情。

你可以通过它轻松地操作 Excel 表格,并且它的 API 非常简洁易懂。如果你之前已经被 Excel 的复杂 API 噎到,使用 PyExcel 可能会让你重新爱上表格!💡

图片

官方文档:

你可以访问 PyExcel 的官方文档来获取更多详细信息:PyExcel Documentation

二、安装教程

想要用 PyExcel 进行 Excel 操作吗?很简单!只需要运行以下命令来安装这个库:

pip install pyexcel

此外,如果你需要支持.xlsx 格式的文件(这是大多数人的首选格式),还可以安装以下依赖:

pip install pyexcel-xlsx

当然,如果你还需要操作 ODS(OpenDocument Spreadsheet)格式的文件,可以额外安装:

pip install pyexcel-ods

安装完这些,你就可以开始你的表格处理之旅了!🌟

三、使用介绍

1. 读取 Excel 文件

假设你有一个名为data.xlsx 的文件,里面包含了一些数据。使用 PyExcel 来读取这个文件只需要这么简单的几行代码:

import pyexcel as pe

# 读取 Excel 文件
sheet = pe.get_sheet(file_name="data.xlsx")

# 输出读取的数据
print(sheet)

这时候,sheet 会以一个类似二维列表的结构返回 Excel 中的内容。例如:

| Name | Age | City | |----------|-----|-----------| | Alice | 30 | New York | | Bob | 25 | Los Angeles|

是不是超级简洁?🤩

2. 写入 Excel 文件

如果你想把数据保存成一个 Excel 文件,PyExcel 也让这件事变得超级轻松!只需要将数据以字典、列表或者字典列表的形式传入save_as 函数就行了:

import pyexcel as pe

data = [
    ['Name''Age''City'],
    ['Alice'30'New York'],
    ['Bob'25'Los Angeles']
]

# 保存为 Excel 文件
pe.save_as(array=data, dest_file_name="output.xlsx")

这样,output.xlsx 就会被生成,并且内容是我们给定的数据。想要看一下 Excel 文件是不是已经写好?直接打开就行,代码可不需要那么复杂!😉

3. 操作数据

PyExcel 还支持一些基本的数据操作。例如,删除某一列、修改某一行或者筛选数据。想让表格变得更“好看”一点?

import pyexcel as pe

data = [
    ['Name''Age''City'],
    ['Alice'30'New York'],
    ['Bob'25'Los Angeles']
]

# 创建一个 Sheet 对象
sheet = pe.Sheet(data)

# 删除第二列
sheet.delete_columns([1])

# 输出修改后的数据
print(sheet)

输出的内容将不再有“Age”这一列:

| Name | City | |----------|-----------| | Alice | New York | | Bob | Los Angeles|

4. 过滤数据

想要筛选符合条件的行?当然没问题!比如筛选出所有“Age”大于等于30的人:

import pyexcel as pe

data = [
    ['Name''Age''City'],
    ['Alice'30'New York'],
    ['Bob'25'Los Angeles']
]

# 创建一个 Sheet 对象
sheet = pe.Sheet(data)

# 筛选出 Age >= 30 的行
filtered_data = sheet.row.select(lambda row: row[1] >= 30)

# 输出筛选后的数据
print(filtered_data)

输出:

[['Name', 'Age', 'City'], ['Alice', 30, 'New York']]

看!是不是很简单?💡

四、实战演练

场景:生成报告

假设你正在做一份关于员工信息的 Excel 报告,内容包括:员工姓名、年龄、城市、薪资、入职日期等信息。你需要将这些信息汇总到一个 Excel 文件中,PyExcel 来帮忙。

  1. 准备数据

首先,我们构建一个模拟的员工数据列表:

import pyexcel as pe
from datetime import datetime

# 模拟的员工数据
employees = [    ['Name''Age''City''Salary''Joining Date'],
    ['Alice', 30, 'New York', 80000, datetime(2015, 6, 1)],
    ['Bob', 25, 'Los Angeles', 75000, datetime(2017, 9, 15)],
    ['Charlie', 28, 'Chicago', 72000, datetime(2019, 1, 20)]
]
  1. 写入 Excel 文件

接着,我们使用pyexcel 将这些数据写入到 Excel 文件:

# 写入员工数据到 Excel
pe.save_as(array=employees, dest_file_name="employee_report.xlsx")
  1. 数据处理

假设你想将“Salary”列进行汇总,查看一下每个人的薪资总额,或者做一些其他操作,PyExcel 也能够轻松应对。比如我们将薪资大于 75,000 的员工筛选出来:

# 筛选出薪资大于 75,000 的员工
high_salary_employees = pe.Sheet(employees).row.select(lambda row: row[3] > 75000)
print(high_salary_employees)

输出:

[['Name', 'Age', 'City', 'Salary', 'Joining Date'], ['Alice', 30, 'New York', 80000, datetime(2015, 6, 1)]]
  1. 最终汇总

这样,你就可以用 PyExcel 来实现一个数据处理和生成 Excel 文件的小小应用啦!🎉

五、小结

PyExcel 是一个非常简单易用的库,它为你处理 Excel 文件提供了非常便利的 API,让你可以专注于数据本身,而不用被 Excel 文件的繁琐细节所困扰。通过几个简单的命令,你就能读取、写入、处理 Excel 文件,甚至做一些更复杂的数据筛选操作。

如果你还在为 Excel 文件的操作而头疼,不妨尝试一下 PyExcel,相信它会让你爱不释手的!🎈


写在最后 🎯

爆肝一整宿,希望这篇文章能帮助你快速找到合适的 Excel 库。