原创:未经允许不得转载,转载需标明出处

打算分为两个部分:
第一部分为:操作Excel表格
第二部分为:操作Excel图表
现在发布为第一部分内容


在最近的项目中的使用到了提取Android帧率日志,进行计算后,需要存在为表格,所以私下研究了下openpyxl,形成文档记录。

一、openpyxl的安装

1.1 python没有自带openpyxl,需要安装。

pip install openpyxl

1.2 安装成功后导入项目

import openpyxl

1.3 操作Excel三要素:

  1. 工作簿:
    Excel文档就是工作簿
  2. 工作表:
    工作簿中的数据透视表。如“sheet”、“sheet1”
  3. 单元格:
    透视表中用于存储数据的基本单元。如“A1”、“C4”

二、用openpyxl模块创建工作簿及工作表

2.1 创建一个工作簿:

workbook = openpyxl.Workbook(write_only=False)

注意:

write_only=True代表只读,是不能执行创建和写入操作的。
write_only=False代表可读可写

2.2 创建一个工作表:

workbook.create_sheet(title="sheet_name", index=0)

注意:

title="sheet_name":工作表名称
index=0:工作表在工作簿中的展示位置

如:

workbook.create_sheet("sheet_name_0",0)
workbook.create_sheet("sheet_name_1",1)
workbook.create_sheet("sheet_name_2",2)
workbook.create_sheet("sheet_name_3",1) # 注意sheet_name_3的位置

获取工作簿中刚刚创建的工作表

workbook.get_sheet_names()

输出:

['sheet_name_0', 'sheet_name_3', 'sheet_name_1', 'sheet_name_2', 'Sheet']

为什么多了最后一个’Sheet’?
原因:
当工作簿为空白是,首次创建工作表,会创建一个默认数量的工作表。
本例中,当创建sheet_name_0时,Sheet也被默认创建了出来。
有多少默认数量工作表和操作系统有关。

2.3 获取活动工作表并查看工作表名

sheet = workbook.get_active_sheet() #获取的是上次保存退出后,活动的工作表
print(sheet.title)

输出

'sheet_name_0'

2.4 选取工作表并重命名工作表

sheet = workbook.get_sheet_by_name('Sheet') # 创建时默认创建的一个工作表
print("活动表名:",sheet.title)
sheet.title = 'sheet_name_4' #为sheet.title属性赋值,即可实现重命名
print("重命名后的活动表名:",sheet.title)

输出:

活动表名:Sheet
重命名后的活动表名:sheet_name_4

2.5 向活动工作表中写入一匹数据,供下面的读取及写入使用。

datas = [['Draw', 'Prepare', 'Process', 'Execute'],['1.77', '0.31', '1.34', '1.05'],['2.95', '0.28', '1.25', '0.92'],['3.04', '0.28', '1.24', '1.05'],['3.25', '0.32', '1.43', '1.06'],['2.09', '0.28', '1.38', '1.09'],['1.73', '0.29', '1.35', '0.89'],['2.90', '0.31', '1.49', '1.03'],['3.30', '0.37', '1.63', '0.97'],['2.29', '0.36', '1.73', '1.12']]for row in datas:sheet.append(row)

2.6 本节完整代码:

workbook = openpyxl.Workbook(write_only=False)  #创建工作簿
workbook.create_sheet("sheet_name_0",0)         #创建工作表
workbook.create_sheet("sheet_name_1",1)         #创建工作表
workbook.create_sheet("sheet_name_2",2)         #创建工作表
workbook.create_sheet("sheet_name_3",1)         # 注意sheet_name_3的位置sheet = workbook.get_sheet_by_name('Sheet')     # 选定工作表为活动工作表
sheet.title = 'sheet_name_4'                    # 重命名工作表 datas = [['Draw', 'Prepare', 'Process', 'Execute'], #创建一匹数据['1.77', '0.31', '1.34', '1.05'],['2.95', '0.28', '1.25', '0.92'],['3.04', '0.28', '1.24', '1.05'],['3.25', '0.32', '1.43', '1.06'],['2.09', '0.28', '1.38', '1.09'],['1.73', '0.29', '1.35', '0.89'],['2.90', '0.31', '1.49', '1.03'],['3.30', '0.37', '1.63', '0.97'],['2.29', '0.36', '1.73', '1.12']]for row in datas:sheet.append(row)workbook.save("test_excel.xlsx")                # 保存工作簿,一定要保存,否则不会写入文件

三、用openpyxl模块读写Excel中工作表数据

3.1 删除工作表

workbook = openpyxl.load_workbook("test_excel.xlsx", read_only=False)
sheet_names = workbook.get_sheet_names()
print(sheet_names)

输出:

['sheet_name_0', 'sheet_name_3', 'sheet_name_1', 'sheet_name_2', 'sheet_name_4']

要删除的sheet为sheet_name_0、sheet_name_1、sheet_name_2,保留sheet_name_3和sheet_name_4

workbook.remove_sheet(workbook.get_sheet_by_name("sheet_name_0"))
workbook.remove_sheet(workbook.get_sheet_by_name("sheet_name_1"))
workbook.remove_sheet(workbook.get_sheet_by_name("sheet_name_2"))

再次查看Sheet

sheet_names = workbook.get_sheet_names()
print(sheet_names)

输出:

['sheet_name_3', 'sheet_name_4']

现在test_excel.xlsx工作簿中的工作表已经发生了变化,如果要输出到文件,就需要保存变更。

workbook.save("test_excel.xlsx")

已经将变更更新到工作簿中。

注意:
remove_sheet()接受的是一个Worksheet类型参数,所以要使用workbook.get_sheet_by_name(“sheet_name_0”)得到一个Worksheet对象。

3.2 读取单元格
读取A1单元格

sheet = workbook.get_sheet_by_name("sheet_name_4")
a1 = sheet['A1']
# sheet['A1'] 和 sheet.cell(row=1, column=1) 等价
print(type(a1))     # 查看单元格类型
print("value = ", a1.value, " , row = ", a1.row, " ,column = ", a1.column, " , coordinate = ", a1.coordinate)

输出:

<class 'openpyxl.cell.cell.Cell'>
value =  Draw  , row =  1  ,column =  1  , coordinate =  A1

3.3 读取一匹单元格

sheet = workbook.get_sheet_by_name("sheet_name_4")
A1_D2 = sheet['A1':'D2']
print(A1_D2)

输出:

((<Cell 'sheet_name_4'.A1>, <Cell 'sheet_name_4'.B1>, <Cell 'sheet_name_4'.C1>, <Cell 'sheet_name_4'.D1>), (<Cell 'sheet_name_4'.A2>, <Cell 'sheet_name_4'.B2>, <Cell 'sheet_name_4'.C2>, <Cell 'sheet_name_4'.D2>))

分析输出结果

(   # 元组# 第一行 数据结果 A1到D1 四列 (<Cell 'sheet_name_4'.A1>, <Cell 'sheet_name_4'.B1>, <Cell 'sheet_name_4'.C1>, <Cell 'sheet_name_4'.D1>),# 第二行 数据结果 A2到D2 四列(<Cell 'sheet_name_4'.A2>, <Cell 'sheet_name_4'.B2>, <Cell 'sheet_name_4'.C2>, <Cell 'sheet_name_4'.D2>)
)

打印A1_D2的值

for row in A1_D2:       # 读取第一行 元组for column in row:  # 读取列 元组 内 4 列数据即A1到D4print("value = ", column.value, " , row = ", column.row, " ,column = ", column.column, " , coordinate = ", column.coordinate)print("-----END ROW-----")

3.4 修改单元格数据
使用A2到D10单元格内的数据分别+1

workbook = openpyxl.load_workbook("test_excel.xlsx", read_only=False)
sheet = workbook.get_sheet_by_name("sheet_name_4")
A2_D10 = sheet['A2':'D10']
for row in A2_D10:for column in row:column.value = float(column.value)+1    # 修改Cell.value属性值即可达到修改单元格的目的。workbook.save("test_excel.xlsx")                # 将修改更新保存到工作簿

3.5 操作总结:

  1. 导入openpyxl模块
  2. 调用openpyxl.Workbook()或openpyxl.load_workbook()函数,获得Workbook对象
  3. 调用get_active_sheet()或get_sheet_by_names()函数,获得活动表Worksheet对象
  4. 使用sheet[索引]或sheet.cell(row=行,column=列),获得Cell对象
  5. 读取或写入Cell对象的value值

简书:https://www.jianshu.com/p/8698a323d2d9

python openpyxl操作Excel表格相关推荐

  1. python openpyxl 操作excel ,使用 conditional_formatting,insert_rows

    场景 python 使用 openpyxl 操作 excel 对于简单的格式来说还是挺方便的,但是对于复杂的格式,操作没有手动来的简单,如果对于复杂的格式也不是用python来做的.对于一个原有的报表 ...

  2. Python Pandas操作Excel表格文件:创建新表格,追加数据

    前言: python操作excel表格文件的增删读写,一般需要用到的第三方库有xlwt,xlrd.xlrd负责读取excel,xlwt负责写入excel文件.这种操作方法比较繁琐,效率还不错,通俗易懂 ...

  3. python openpyxl 操作excel xlrd.biffh.XLRDError: Excel xlsx file; not supported错误修改

    python xlrd/openpyxl 操作excel xlrd.biffh.XLRDError: Excel xlsx file; not supported错误修改 代码: 错误: excel读 ...

  4. python操作excel表格-python如何操作excel表格

    Python对Excel的读写主要有xlrd.xlwt.xlutils.openpyxl.xlsxwriter几种. python学习网,大量的免费python视频教程,欢迎在线学习! 1.xlrd主 ...

  5. Python.openpyxl操作Excel

    Python 操作 Excel 存取数据 1. openpyxl 模块 1.1 安装 openpyxl 模块 1.2 Excel 文件的三个对象 1.2.1 Workbook 对象 1.2.2 Wor ...

  6. python openpyxl 操作 Excel

    安装openpyxl pip install openpyxl 工作簿的新建打开和保存 1,读取和保存xlsx文件(创建工作簿) import openpyxl as vb file = r'周杰伦. ...

  7. 通Python实现操作 excel表格 工作效率提升百倍

    一.概述 操作 excel 是程序员经常要遇到的场景.因为产品.运营的数据都是以这种格式存储.所以,当程序员拿到这些数据肯定要解析,甚至需要把结果输出成 excel 文件. 下面就介绍如果用 Pyth ...

  8. Python自动化操作Excel表格

    目录 一.Python打开及读取Excel表格内容 二.Python向Excel表格中写 三.批量调整字体.样式 四.编程生成Excel内图表 一.Python打开及读取Excel表格内容 #打开以及 ...

  9. python openpyxl 操作excel 保留原格式

    修改前的excel数据 代码如下 import openpyxl wb = openpyxl.load_workbook(u'E:/exceltest/oldexcel.xlsx') sheetnam ...

最新文章

  1. python内存管理错误的是_关于Python内存管理,下列说法错误的是
  2. Java元组Tuple使用实例--转载
  3. c++ 不允许使用抽象类类型的对象_Java中日期API的使用总结
  4. Window10+Python3.5安装opencv
  5. Android逆向基础----Android Dalvik虚拟机
  6. spring-注入list集合对象(值是对象)
  7. windows python3.7安装numpy问题的解决方法
  8. 客户端与服务端的TCP通信实现(Qt)
  9. [PAT乙级]1001 害死人不偿命的(3n+1)猜想
  10. oracle频,Oracle动作频频 Java或浴火重生
  11. Windows上PostgreSQL安装配置教程
  12. BootStrapStudio文档阅读笔记-Getting Started Guide解析
  13. 一步步教你搭建SSM整合+前提配置超详细版(IDEA版本)
  14. 计算机盘不显示桌面,电脑开机后不显示Windows系统桌面怎么办?
  15. 业务gis 怎么让别的开发人员不需要懂gis就可以搞开发? (五)
  16. sqlserver 字符串中是不是全为数字
  17. “宇宙最强”GPU —— NVIDIA Tesla V100 面向开发者开放试用!
  18. 华为手机碎屏后如何导出数据_手机屏幕坏了怎么把数据导出来
  19. 微信小程序样式-在小程序中创建样式的几种写法
  20. webp的js插件_Vuejs webp图片支持,插件开发过程~

热门文章

  1. java下载excel导入excel读取excel数据,将数据插入数据库
  2. 借助云开发,利用订阅消息,云函数路由实现小程序好友一对一聊天,添加好友等仿微信功能
  3. 《推荐系统实践》 第四章 利用用户标签数据 读书笔记
  4. 转:jsp内置对象中page与pageContext与el内置对象pageScope与pageContext区别
  5. Java代码清除Word文档的批注和修订 (Aspose.Words) Java老铁们,亲测有效!
  6. 12306火车票查询——Python
  7. MySQL之——mysqldump参数详细说明
  8. HCIA-RoutingSwitching华为认证路由交换工程师(持续更新中2%)
  9. java嵌套for循环基础练习 -班级平均分
  10. JVM 各种OOM问题与解决方法