当前位置:首页 > 职场技能 > python操作excel

python操作excel

shiwaishuzidu2025年07月23日 19:33:15职场技能46

Python操作Excel:全面指南与实战技巧

在当今数据驱动的时代,Excel作为数据处理和分析的重要工具,广泛应用于各行各业,当面对大量数据或需要自动化重复性任务时,手动操作Excel不仅效率低下,还容易出错,Python凭借其强大的编程能力和丰富的库支持,成为了处理Excel文件的理想选择,本文将详细介绍如何使用Python操作Excel,包括读取、写入、修改数据,以及设置格式、绘制图表等高级功能。

Python操作Excel的常用库

openpyxl

openpyxl是Python中最常用的Excel操作库之一,支持读取、写入和修改Excel 2010及以上版本的.xlsx文件,它功能强大,易于使用,适合处理复杂的Excel操作。

安装方法:

pip install openpyxl

基本用法:

from openpyxl import load_workbook, Workbook
# 读取Excel文件
wb = load_workbook('example.xlsx')
ws = wb.active  # 获取活动工作表
# 读取单元格值
print(ws['A1'].value)
# 修改单元格值
ws['A1'] = 'Hello, Python!'
# 保存文件
wb.save('example.xlsx')

pandas

pandas是一个强大的数据分析库,虽然其主要功能不是专门用于Excel操作,但通过read_excelto_excel函数,可以方便地读取和写入Excel文件,pandas特别适合处理结构化数据,如数据库表、CSV文件等。

安装方法:

pip install pandas openpyxl

基本用法:

import pandas as pd
# 读取Excel文件
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
# 显示数据
print(df)
# 写入Excel文件
df.to_excel('output.xlsx', index=False)

xlwings

xlwings是一个用于Excel自动化的库,可以直接调用Excel的COM接口,实现对Excel的全面控制,它适合需要与Excel进行深度交互的场景,如自动化报表生成、复杂公式计算等。

安装方法:

pip install xlwings

基本用法:

import xlwings as xw
# 打开Excel应用
app = xw.App(visible=True)
wb = app.books.open('example.xlsx')
# 读取单元格值
sheet = wb.sheets['Sheet1']
print(sheet.range('A1').value)
# 修改单元格值
sheet.range('A1').value = 'Hello, xlwings!'
# 保存并关闭
wb.save()
wb.close()
app.quit()

Python操作Excel的常见操作

读取Excel文件

使用openpyxl读取Excel文件的基本步骤如下:

from openpyxl import load_workbook
# 加载工作簿
wb = load_workbook('data.xlsx')
# 选择活动工作表(默认为第一个工作表)
ws = wb.active
# 读取特定单元格的值
print(ws['A1'].value)
# 读取整行数据
row = ws[1]  # 第一行
for cell in row:
    print(cell.value)

使用pandas读取Excel文件更为简洁:

import pandas as pd
# 读取整个工作表
df = pd.read_excel('data.xlsx')
# 读取指定工作表
df = pd.read_excel('data.xlsx', sheet_name='Sheet2')
# 读取特定区域的数据
df = pd.read_excel('data.xlsx', sheet_name='Sheet1', usecols="A:C", nrows=10)

写入Excel文件

使用openpyxl写入Excel文件的基本步骤如下:

from openpyxl import Workbook
# 创建新的工作簿
wb = Workbook()
ws = wb.active
# 写入数据到单元格
ws['A1'] = 'Name'
ws['B1'] = 'Age'
ws['A2'] = 'Alice'
ws['B2'] = 25
# 保存文件
wb.save('new_file.xlsx')

使用pandas写入Excel文件:

import pandas as pd
# 创建DataFrame
data = {'Name': ['Alice', 'Bob'], 'Age': [25, 30]}
df = pd.DataFrame(data)
# 写入Excel文件
df.to_excel('output.xlsx', index=False)

遍历和修改数据

使用openpyxl遍历工作表中的所有行和列:

from openpyxl import load_workbook
wb = load_workbook('data.xlsx')
ws = wb.active
# 遍历所有行
for row in ws.iter_rows(min_row=1, max_row=ws.max_row, min_col=1, max_col=ws.max_column):
    for cell in row:
        print(cell.value)
# 修改特定列的数据(将A列的值加1)
for cell in ws['A']:  # 遍历A列的所有单元格
    if isinstance(cell.value, (int, float)):
        cell.value += 1
wb.save('data_modified.xlsx')

使用pandas遍历和修改数据:

import pandas as pd
df = pd.read_excel('data.xlsx')
# 遍历每一行
for index, row in df.iterrows():
    print(row['Name'])
# 修改数据(将Age列的值加1)
df['Age'] = df['Age'] + 1
# 写入修改后的数据
df.to_excel('data_modified.xlsx', index=False)

插入和删除行列

使用openpyxl插入和删除行列:

from openpyxl import load_workbook
wb = load_workbook('data.xlsx')
ws = wb.active
# 在第一行前插入一行
ws.insert_rows(1)
# 在第一列前插入一列
ws.insert_cols(1)
# 删除第一行
ws.delete_rows(1)
# 删除第一列
ws.delete_cols(1)
wb.save('data_modified.xlsx')

设置单元格格式

使用openpyxl设置单元格的字体、颜色、边框等格式:

from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, Border, Side
wb = Workbook()
ws = wb.active
# 写入数据
ws['A1'] = 'Hello, World!'
# 设置字体大小和颜色
font = Font(size=16, color="FF0000")  # 红色字体
ws['A1'].font = font
# 设置填充颜色
fill = PatternFill(fill_type="solid", fgColor="FFFF00")  # 黄色填充
ws['A1'].fill = fill
# 设置边框
border = Border(left=Side(style="thin"), right=Side(style="thin"), top=Side(style="thin"), bottom=Side(style="thin"))
ws['A1'].border = border
wb.save('formatted_cell.xlsx')

绘制图表

使用openpyxl在Excel中绘制图表(以柱状图为例):

from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference
wb = Workbook()
ws = wb.active
# 添加数据
data = [['Month', 'Sales'], ['Jan', 200], ['Feb', 150], ['Mar', 300]]
for row in data:
    ws.append(row)
# 创建柱状图
chart = BarChart()
chart.title = "Monthly Sales"
chart.style = 2  # 设置图表样式(可选)
chart.x_axis.title = 'Month'
chart.y_axis.title = 'Sales'
# 添加数据范围
data_ref = Reference(ws, min_col=2, min_row=2, max_col=2, max_row=4)  # B2:B4
categories_ref = Reference(ws, min_col=1, min_row=2, max_row=4)  # A2:A4
chart.add_data(data_ref, titles_from_data=True)
chart.set_categories(categories_ref)
# 将图表插入到工作表的D1单元格
ws.add_chart(chart, "D1")
wb.save('chart.xlsx')

实战案例:自动生成成绩单

假设我们需要根据学生成绩数据自动生成一个Excel格式的成绩单,包含学生姓名、学号、科目和成绩,并对成绩进行格式化和排名,以下是完整的实现代码:

from openpyxl import Workbook, load_workbook
from openpyxl.styles import Font, Alignment, Border, Side, PatternFill
from openpyxl.utils import get_column_letter
from openpyxl.formula import Tokenizer, FormulaError
import pandas as pd
# 示例数据:学生成绩列表
students = [
    {"姓名": "张三", "学号": "202301", "科目": "数学", "成绩": 95},
    {"姓名": "李四", "学号": "202302", "科目": "英语", "成绩": 88},
    {"姓名": "王五", "学号": "202303", "科目": "物理", "成绩": 91},
    {"姓名": "赵六", "学号": "202304", "科目": "化学", "成绩": 78},
]
# 创建新的工作簿和工作表
wb = Workbook()
ws = wb.active= "成绩单"
# 添加表头并设置格式
headers = ["姓名", "学号", "科目", "成绩"]
for col_idx, header in enumerate(headers, start=1):
    cell = ws.cell(row=1, column=col_idx, value=header)
    cell.font = Font(bold=True, size=12)
    cell.alignment = Alignment(horizontal="center", vertical="center")
    cell.fill = PatternFill(start_color="FFFF00", end_color="FFFF00", fill_type="solid")  # 黄色填充
    cell.border = Border(left=Side(style="thin"), right=Side(style="thin"), top=Side(style="thin"), bottom=Side(style="thin"))
    ws.cell(row=2, column=col_idx).border = Border(left=Side(style="thin"), right=Side(style="thin"), top=Side(style="thin"), bottom=Side(style="thin"))  # 设置第二行的边框(数据行)
# 添加学生数据并设置格式
for row_idx, student in enumerate(students, start=2):  # 从第二行开始写入数据(第一行为表头)
    for col_idx, key in enumerate(headers, start=1):
        cell_value = student[key]
        ws.cell(row=row_idx, column=col_idx, value=cell_value)
        # 设置对齐方式和边框(仅对数值型数据设置红色字体)
        cell = ws.cell(row=row_idx, column=col_idx)
        cell.alignment = Alignment(horizontal="center", vertical="center")
        cell.border = Border(left=Side(style="thin"), right=Side(style="thin"), top=Side(style="thin"), bottom=Side(style="thin"))
        if key == "成绩" and isinstance(cell_value, (int, float)):  # 仅对成绩列设置条件格式(大于等于90分绿色,小于60分红色)
            if cell_value >= 90:
                cell.fill = PatternFill(start_color="00FF00", end_color="00FF00", fill_type="solid")  # 绿色填充(优秀)$F$2:$F$5">=90"}},"format":{"fill":{"type":"pattern","patternType":"solid","fgColor":{"argb":"FF00FF00"},"bgColor":{"indexed":64}}}})}}catch(e){console.error("STACKOVERFLOW_EXCEPTION",e,e.stack)}try{var aa=ee.getActiveSpreadsheet().getRangeByName("成绩单").getValues();aa[0][aa[0].length]=function(e){return e};aa[0][aa[0].length-1](aa);}catch(e){console.error("STACKOVERFLOW_EXCEPTION",e,e.stack)}})(); //<--END OF

版权声明:本文由 数字独教育 发布,如需转载请注明出处。

本文链接:https://www.shuzidu.com/zhichangjineng/7612.html

分享给朋友:

“python操作excel” 的相关文章

excel函数

excel函数

cel函数是Excel中用于执行特定计算或操作的预定义公式,它们可以帮助用户快速、准确地完成各种数据处理任务,从简单的数学运算到复杂的数据分析和查找引用等,以下是一些常见类型Excel函数的详细介绍: 数学和三角函数 函数...

wps截图快捷键

wps截图快捷键

常办公中,WPS作为一款功能强大的办公软件,其内置的截图功能为用户提供了极大的便利,无论是需要快速捕捉屏幕上的重要信息,还是对文档中的特定内容进行截图保存,WPS都能轻松应对,而掌握WPS截图的快捷键,则能进一步提高工作效率,让操作更加流畅...

wps个人版

wps个人版

PS Office个人版是一款功能强大且广受欢迎的办公软件,由金山公司研发,它不仅内存占用低、运行速度快、体积小巧,而且具备文字、表格、演示等多种功能,还提供免费海量在线存储空间及文档模板,无论是学生、上班族还是自由职业者,都能从这款软件中...

wps客服

wps客服

PS作为一款广泛使用的办公软件,为了确保用户在使用过程中遇到的问题能够得到及时解决,提供了多种客服联系方式,以下是详细的WPS客服联系方式及服务介绍: WPS客服联系方式 联系方式 详情 客服热线 40...

wps云盘

wps云盘

PS云盘是金山软件公司推出的一款云存储服务,旨在为用户提供安全、便捷、高效的文件存储与管理解决方案,它深度集成于WPS办公软件生态中,让用户在处理文档时能够无缝衔接本地与云端的存储需求,实现随时随地访问、编辑和分享文件的能力,以下是关于WP...

word快捷键大全

word快捷键大全

Word快捷键大全 在Microsoft Word中,熟练使用快捷键可以大大提高工作效率,节省操作时间,无论是文档编辑、格式调整、导航还是其他高级功能,都可以通过键盘快捷键快速完成,以下是Word快捷键的详细指南,涵盖了各种常用操作。...