Python文件处理V——Excel文件处理

一,简介

1,Excel文件介绍

Excel文件是数据分析和日常工作中经常使用的文件,使用Python可以对这类文件进行一些快速便捷的操作。对Excel的处理不仅需要了解文件的打开,读取,写入。还要了解一些便捷操作:

  • sheet操作
  • 行列操作
  • 单元格操作
  • 公式操作
  • 图表操作
2,准备工作

在处理Excel文件时,我们会用到openpyxl模块,通常使用pip下载

openpyxl的官方文档:openpyxl - A Python library to read/write Excel 2010 xlsx/xlsm files --- openpyxl 3.1.2 documentation

二,基础操作

1,文件打开和关闭

一些常用方法:

|----------------------------------|----------------------|
| 方法 | 说明 |
| wb = load_workbook('xx.xlsx') 说明 | 打开excel文件 |
| wb.sheetnames | 获取所有sheet名称 |
| sheet = wb[sheetname] | 根据名称获取sheet |
| wb.active | 获取当前默认的sheet |
| wb.close() | 关闭文件 |
| wb.save(filename) | 将当前的workbook保存到指定的路径 |

示例:

  • 打开excel;
  • 获取所有的sheet;
  • 根据名称获取sheet;
python 复制代码
#导入模块
from openpyxl import load_workbook
#将当前的workbook保存到指定的路径
order_path = r'D:\Jupyter\Homework of course\tmp.xlsx'#这份文件没有内容
#打开excel文件
wb = load_workbook(order_path)
#获取sheet的名称
sheetnames = wb.sheetnames
for sheetname in sheetnames:
    print("sheet name:", sheetname)
current_sheet = wb[sheetname]
print(current_sheet)
wb.close()

输出结果:

python 复制代码
sheet name: Sheet1
sheet name: Sheet2
sheet name: Sheet3
<Worksheet "Sheet3">
​
2,文件读取

|--------------------------------------------------|------------------------|
| 方法 | 说明 |
| cell = sheet["A1"] | 获取一个单元格 |
| cell.value | 获取单元格数据 |
| sheet['A'] | 获取第A列数据单元 |
| sheet['A':'B'] | 获取第A到B列数据单元 |
| sheet[n] | 获取第n行数据单元 |
| sheet[m:n] | 获取m到n行数据单元 |
| sheet["A1":"C5"] | 获取指定行列范围的数据单元 |
| ws.iter_cols(min_col, max_col, min_row, max_row) | 返回指定范围数据单元迭代器,数据格式按列返回 |
| ws.iter_rows(min_col, max_col, min_row, max_row) | 返回指定范围数据单元迭代器,数据格式按行返回 |
| sheet.max_row | 获取当前sheet中最大行 |
| sheet.max_column | 获取当前sheet中最大列 |

3,文件写入

|-----------------------------------------|-------------------------|
| 方法 | 说明 |
| wb = Workbook() | 创建workbook对象 |
| sheet = wb.active | 获取当前sheet |
| wb.create_sheet(title=None, index=None) | 创建新的sheet,title为sheet名称 |
| wb.remove(sheet) | 根据名称删除sheet |
| sheet['A1'] = 42 | 设置单元格值 |
| sheet.append([1, 2, 3]) | 插入一行数据 |
| wb.save(fpath) | 保存数据到Excel |

三,格式设置

1,介绍

官方文档:Working with styles --- openpyxl 3.1.3 documentation

Excel的格式设置主要包括字体设置和单元格设置。字体设置包括:字体,大小,颜色,下划线;

单元格设置则包括:填充色,边框,对齐方式。

2,单元格属性

|----------------|-------------|
| 属性 | 说明 |
| cell.value | 获取单元格内的值 |
| cell.font | 设置单元格内的字体样式 |
| cell.fill | 设置单元格内的填充颜色 |
| cell.alignment | 设置单元格内的对齐方式 |
| cell.border | 设置单元格内的边框样式 |

3,默认设置
python 复制代码
from openpyxl.styles import PatternFill, Border, Side, Alignment, Protection, Font
#字体设置
font = Font(name='Calibri', size=11, bold=False, italic=False, vertAlign=None, 
underline='none', strike=False, color='FF000000')
#填充设置
fill = PatternFill(fill_type=None, start_color='FFFFFFFF',end_color='FF000000')
#边框设置
border = Border(left=Side(border_style=None, color='FF000000'),...)
#对齐设置
alignment=Alignment(horizontal='general', vertical='bottom', text_rotation=0, 
wrap_text=False, shrink_to_fit=False, indent=0)

其中显示了不同设置有关的方法和参数。

4,使用示例

首先,通过Python技巧创建了空白文件,具体方法可以在前面查找:

然后,使用如下代码:

python 复制代码
from openpyxl.styles import colors
from openpyxl.styles import Font, Color
from openpyxl.styles import PatternFill
from openpyxl import Workbook
fpath = r"D:\Jupyter\Homework of course\tmp.xlsx"
wb = Workbook()
ws = wb.active
#A1设置颜色
ft1 = Font(color="FF0000")
a1_cell = ws["A1"]
a1_cell.font = ft1
a1_cell.value = "小明"
#A2设置颜色,大小,字体
ft2 = Font(name='微软雅黑', size=14, color="00808000")
a2_cell = ws["A2"]
a2_cell.font = ft2
a2_cell.value = "小红"
#A2设置颜色,大小,字体, 下划线
ft3 = Font(name='隶书', size=14, color="00FF00FF", underline="single")
a3_cell = ws["A3"]
a3_cell.font = ft3
#设置填充色
fill = PatternFill(fill_type="solid",start_color='0000DD',end_color='FF000000')
a3_cell.fill = fill 
a3_cell.value = "小凯"
wb.save(fpath)

显示结果:

四,总结

使用Python处理Excel文件时,不仅需要掌握常规的,打开,读取,写入,关闭,还需要记住如何设置格式,更多信息可以在官网获取。

相关推荐
SmartRadio4 分钟前
ESP32添加修改蓝牙名称和获取蓝牙连接状态的AT命令-完整UART BLE服务功能后的完整`main.c`代码
c语言·开发语言·c++·esp32·ble
且去填词18 分钟前
Go 语言的“反叛”——为什么少即是多?
开发语言·后端·面试·go
知乎的哥廷根数学学派35 分钟前
基于生成对抗U-Net混合架构的隧道衬砌缺陷地质雷达数据智能反演与成像方法(以模拟信号为例,Pytorch)
开发语言·人工智能·pytorch·python·深度学习·机器学习
hhzz1 小时前
Springboot项目中使用POI操作Excel(详细教程系列3/3)
spring boot·后端·excel·poi·easypoi
WangYaolove13141 小时前
Python基于大数据的电影市场预测分析(源码+文档)
python·django·毕业设计·源码
知乎的哥廷根数学学派1 小时前
基于自适应多尺度小波核编码与注意力增强的脉冲神经网络机械故障诊断(Pytorch)
人工智能·pytorch·python·深度学习·神经网络·机器学习
yeziyfx1 小时前
kotlin中 ?:的用法
android·开发语言·kotlin
charlie1145141911 小时前
嵌入式的现代C++教程——constexpr与设计技巧
开发语言·c++·笔记·单片机·学习·算法·嵌入式
古城小栈2 小时前
Rust 网络请求库:reqwest
开发语言·网络·rust
hqwest2 小时前
码上通QT实战12--监控页面04-绘制6个灯珠及开关
开发语言·qt·qpainter·qt事件·stackedwidget