Python获取excel内容及相关操作代码实例


Posted in Python onAugust 10, 2020

Python没有自带openyxl,需要安装: pip install openyxl

打开excel文档: openyxl.load_workbook(excel地址) - 打开现有excel文件

openyxl.Workbook() - 新建一个excel文件

返回一个工作博对象

import openpyxl
wb = openpyxl.load_workbook("test.xlsx")
print(type(wb)) # <class 'openpyxl.workbook.workbook.Workbook'>

openpyxl.load_workbook()函数,传入一个存在的excel文件名称/excel文件名称+文件路径,返回一个workbook对象。

从workbook对象中获取工作表

import openpyxl
wb = openpyxl.load_workbook("test.xlsx")
# print(type(wb))  # <class 'openpyxl.workbook.workbook.Workbook'>
# 工作簿对象.sheetnames  - 获取当前工作簿中所有表的名字
# print(wb.sheetnames) ['Sheet1', 'Sheet2', 'Sheet3']
# 工作簿对象.active  - 获取当前活动表对应的Worksheet对象
# print(wb.active)  <Worksheet "Sheet1">
# 工作簿对象[表名]  - 根据表名获取指定表对象
# print(wb["Sheet2"]) <Worksheet "Sheet2">
# 表对象.title  - 获取表对象的表名
ws = wb["Sheet1"]
# print(ws.title)  Sheet1
# 表对象.max_row  - 获取表中最多有多少行
# print(ws.max_row)  15
# 表对象.max_column  - 获取表有多少列
print(ws.max_column) # 3

从表中取得单元格

import openpyxl
wb = openpyxl.load_workbook("test.xlsx")
ws = wb["Sheet1"]
# 表对象['列号行号']  - 获取指定列的指定行对应的单元格对象(单元格对象是 Cell 类的对象,列号是从A开始,行号是从1开始)
a = ws["A1"]
# print(a) # <Cell 'Sheet1'.A1>
# 单元格对象.value  - 获取单元格中的内容
print(a.value)
# 单元格对象.row - 获取行号(数字1开始)
print(a.row)
# 单元格对象.column  - 获取列号(数字1开始)
print(a.column)
# 单元格对象.coordinate  - 获取位置(包括行号和列号)
print(a.coordinate)
# 表对象.iter_rows() - 一行一行的取
row_s = ws.iter_rows()
for a in row_s:
  for i in a:
    print(i.value)
# 表对象.iter_cols()  - 列表一列的取
col_s = ws.iter_cols()
for c in col_s:
  for j in c:
    print(j.value)

用字母来指定列时会出现列Z之后用两个字母代替,可以调用表的cell()方法,传入整数作为行数和列数,第一行或者第一列的整数是1,而不是0

表对象.cell(行号,列号)

import openpyxl
wb = openpyxl.load_workbook("test.xlsx")
ws = wb["Sheet1"]
# 获取第二列的所有内容
max_row = ws.max_row
for row in range(1, max_row + 1):
  cell = ws.cell(row, 2)
  print(cell.value)

从表中取得列和行

取电子表格中一行、一列或一个矩形区域中的所有 Cell 对象

表对象[位置1:位置2] 获取指定范围内的所有单元格

import openpyxl
from openpyxl.utils import get_column_letter, column_index_from_string
wb = openpyxl.load_workbook("test.xlsx")
ws = wb["Sheet1"]
max_row = ws.max_row
column = get_column_letter(max_row)
# 获取第一列所有单元格对象
row2 = ws["A1":f"{column}1"]
ss = [(cell.coordinate, cell.value) for cells in row2 for cell in cells]
print(ss)

import openpyxl
from openpyxl.utils import get_column_letter, column_index_from_string
wb = openpyxl.load_workbook("test.xlsx")
ws = wb["Sheet1"]
max_cols = ws.max_column
column = get_column_letter(max_cols)
# 获取第一片区域所有单元格对象
row2 = ws["A1":f"{column}3"]
ss = [(cell.coordinate, cell.value) for cells in row2 for cell in cells]
print(ss)

创建并保存Excel文档

openpyxl.Workbook() - 创建空的Excel文件对应的工作薄对象

工作薄对象.save(文件路径) - 保存文件

import openpyxl
wb = openpyxl.load_workbook("test.xlsx")
ws = wb["Sheet1"]
# 修改sheet的名称
ws.title = "hello_world"
wb.save("test.xlsx")

创建和删除sheet

工作薄对象.create_sheet(title, index) - 在指定工作薄中的指定位置(默认是最后)创建指定名字的表,并返回表对象

工作薄对象.remove(表对象) - 删除工作薄中的指定表

import openpyxl
wb = openpyxl.load_workbook("test.xlsx")
wb.create_sheet()
print(wb.sheetnames)
wb.create_sheet("test1")
print(wb.sheetnames)
wb.create_sheet("test2", index=0)
print(wb.sheetnames)
wb.remove(wb["test2"])
print(wb.sheetnames)
wb.save("test.xlsx")

将数据写入表格中

import openpyxl
wb = openpyxl.load_workbook("test.xlsx")
ws = wb["hello_world"]
# 方式一
ws["A4"] = "hello_world"
# 方式二
ws.cell(4, 5).value = "hello_test"
wb.save("test.xlsx")

设置单元格样式

用表格展示数据的时候,有的时候需要对不同的数据以不同的风格进行展示从而达到分区或者强调的作用。

import openpyxl
from openpyxl.styles import Font, PatternFill, Border, Side, Alignment

# 1.打开工作薄
wb = openpyxl.load_workbook("test.xlsx")
ws = wb["hello_world"]
# 2.设置单元格字体样式
"""
Font(
  name=None,   # 字体名,可以用字体名字的字符串
  strike=None,  # 删除线,True/False
  color=None,   # 文字颜色
  size=None,   # 字号
  bold=None,   # 加粗, True/False
  italic=None,  # 倾斜,Tue/False
  underline=None # 下划线, 'singleAccounting', 'double', 'single', 'doubleAccounting'
)
"""
# 1:创建字体对象
font1 = Font(
  size=20,
  italic=True,
  color="ff0000",
  bold=True,
  strike=True
)
# 2:设置指定单元格的字体
# 单元格对象.font = 字体对象
ws["B2"].font = font1

# 3:设置单元格填充样式
"""
PatternFill(
  fill_type=None,  # 设置填充样式: 'darkGrid', 'darkTrellis', 'darkHorizontal', 'darkGray', 'lightDown', 'lightGray', 'solid', 'lightGrid', 'gray125', 'lightHorizontal', 'lightTrellis', 'darkDown', 'mediumGray', 'gray0625', 'darkUp', 'darkVertical', 'lightVertical', 'lightUp'
  start_color=None # 设置填充颜色
)
"""
fill = PatternFill(
  fill_type="solid",
  start_color="ffff00"
)
ws["B2"].fill = fill

# 设置单元格对齐样式
al = Alignment(
  horizontal="right",  # 水平向方: center 靠左:left 靠右: right
  vertical="top"     # 垂直方向: center, top, bottom
)
ws["B2"].alignment = al

# 设置边框样式
# 设置边对象(四个边可以是一样的也可以不同,如果不同就创建多个Side对象)
side = Side(border_style="thin", color="0000ff")
# 设置边框对象(left、right、top、bottom表示的是边框的四个边,这儿四个边使用的是一个边对象)
db = Border(left=side, right=side, top=side, bottom=side)
ws["B2"].border = db

# 设置单元格的宽度和高度
# 设置指定列的宽度
ws.column_dimensions["A"].width = 20
# 设置指定行的高度
ws.row_dimensions[1].height = 45

wb.save("test.xlsx")

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
跟老齐学Python之Python安装
Sep 12 Python
详细介绍Python中的偏函数
Apr 27 Python
python MySQLdb Windows下安装教程及问题解决方法
May 09 Python
windows及linux环境下永久修改pip镜像源的方法
Nov 28 Python
python实现二维码扫码自动登录淘宝
Dec 27 Python
Python反射用法实例简析
Dec 22 Python
python实现旋转和水平翻转的方法
Oct 25 Python
python+opencv 读取文件夹下的所有图像并批量保存ROI的方法
Jan 10 Python
浅谈Python_Openpyxl使用(最全总结)
Sep 05 Python
Django通用类视图实现忘记密码重置密码功能示例
Dec 17 Python
浅谈keras通过model.fit_generator训练模型(节省内存)
Jun 17 Python
python 写一个文件分发小程序
Dec 05 Python
Python利用命名空间解析XML文档
Aug 10 #Python
Python如何定义有默认参数的函数
Aug 10 #Python
如何更换python默认编辑器的背景色
Aug 10 #Python
django前端页面下拉选择框默认值设置方式
Aug 09 #Python
解决Django响应JsonResponse返回json格式数据报错问题
Aug 09 #Python
django 获取字段最大值,最新的记录操作
Aug 09 #Python
在django中查询获取数据,get, filter,all(),values()操作
Aug 09 #Python
You might like
php中AES加密解密的例子小结
2014/02/18 PHP
Thinkphp框架中D方法与M方法的区别
2016/12/23 PHP
Laravel核心解读之异常处理的实践过程
2019/02/24 PHP
找到了一篇jQuery与Prototype并存的冲突的解决方法
2007/08/29 Javascript
javascript web对话框与弹出窗口
2009/02/22 Javascript
使用JavaScript 实现对象 匀速/变速运动的方法
2013/05/08 Javascript
用jQuery与JSONP轻松解决跨域访问的问题
2014/02/04 Javascript
js 左右悬浮对联广告代码示例
2014/12/12 Javascript
javascript操作select元素实例分析
2015/03/27 Javascript
Nodejs中session的简单使用及通过session实现身份验证的方法
2016/02/04 NodeJs
使用Vue.js创建一个时间跟踪的单页应用
2016/11/28 Javascript
angular实现表单验证及提交功能
2017/02/01 Javascript
JavaScript实现的冒泡排序法及统计相邻数交换次数示例
2017/04/26 Javascript
微信小程序上滑加载下拉刷新(onscrollLower)分批加载数据(二)
2017/05/11 Javascript
JS实现导出Excel的五种方法详解【附源码下载】
2018/03/15 Javascript
Javascript的console['']常用输入方法汇总
2018/04/26 Javascript
layui点击导航栏刷新tab页的示例代码
2018/08/14 Javascript
解决Vue.js父组件$on无法监听子组件$emit触发事件的问题
2018/09/12 Javascript
详解elementUI中input框无法输入的问题
2020/04/27 Javascript
vue脚手架项目创建步骤详解
2021/03/02 Vue.js
python网络编程学习笔记(四):域名系统
2014/06/09 Python
Python实现分割文件及合并文件的方法
2015/07/10 Python
Python 写入训练日志文件并控制台输出解析
2019/08/13 Python
Python+OpenCV实现将图像转换为二进制格式
2020/01/09 Python
Python描述符descriptor使用原理解析
2020/03/21 Python
TensorFlow实现批量归一化操作的示例
2020/04/22 Python
可自定义箭头样式的CSS3气泡提示框
2016/03/16 HTML / CSS
Bluebella德国官网:英国性感内衣和睡衣品牌
2019/11/08 全球购物
旅游管理专业个人求职信范文
2013/12/24 职场文书
幼儿园毕业园长感言
2014/02/24 职场文书
党校培训自我鉴定范文
2014/04/10 职场文书
2014年超市员工工作总结
2014/11/18 职场文书
故宫导游词
2015/01/31 职场文书
综合素质评价自我评价
2015/03/06 职场文书
工厂采购员岗位职责
2015/04/07 职场文书
总经理2015中秋节致辞
2015/07/29 职场文书