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

python操作excel

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

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图表的基础元素 |元素名称|说明| |--|--|Chart title)|用...

excel合并单元格快捷键

excel合并单元格快捷键

Excel中,合并单元格是一项常用的操作,它可以将多个相邻的单元格合并为一个单元格,以便更好地组织和显示数据,而掌握合并单元格的快捷键,能够大大提高我们的操作效率,我将为你详细介绍Excel中合并单元格的快捷键以及相关操作。 Excel合...

excel筛选

excel筛选

Excel中进行筛选操作是一项非常实用的功能,它能够帮助我们从大量数据中快速定位和查看特定信息,无论是处理简单的表格还是复杂的数据集,掌握筛选技巧都能极大地提高工作效率,下面将详细介绍如何在Excel中使用筛选功能,并通过实例说明其应用场景...

excel函数公式大全

excel函数公式大全

cel函数公式大全涵盖了多个类别,以下是一些常用且重要的Excel函数公式及其说明: 序号 函数名称 功能描述 语法示例 1 SUM 求和函数,计算一组数值的总和 =SUM(A1:A10)...

wps安装

wps安装

PS安装是许多用户在使用这款办公软件前必须经历的一个步骤,WPS作为一款功能强大的办公软件,其安装过程相对简单,但也有一些细节需要注意,以下是详细的WPS安装指南: 操作系统 下载链接 安装步骤 注意事项...

wps图片怎么卸载

wps图片怎么卸载

PS图片是WPS软件的捆绑组件,通常无法单独卸载,但可以通过以下几种方法来取消其关联或整体卸载WPS软件,从而达到类似的效果。 通过WPS内部设置取消图片关联 步骤 具体操作 打开WPS 双击桌面上的W...