openpyxl读取Excel数据
#! Python3
#-*- coding:utf8 -*-
import openpyxl
#载入表格内容
wb=openpyxl.load_workbook('e:\\work\\newFile.xlsx')
print(wb.get_sheet_names())
#返回的为表格中的工作簿名list
#定位到Sheet工作簿
sheet=wb.get_sheet_by_name('Sheet')
print(sheet.title)
#返回sheet工作簿的名称"Sheet"
#定位到最后编辑的工作簿
sheet=wb.active
c=sheet['B1']
#单元格有属性 value值,row行号1,column列号B,coordinate位置号B1
print('c value is :',c.value,', row is :',c.row,', column is : ',c.column,' , coordinate is : ',c.coordinate)
#单元格定位的第二种表示方式
print(sheet.cell(row=1,column=2),' c: ',c)
#输出值同变量c
#sheet有属性 max_row非空白区的最大行号 ,max_column 非空白区的最大列号
from openpyxl.utils import get_column_letter,column_index_from_string
#get_column_letter()将数字列号转换为对应的字母,2:B。
#column_index_from_string()将字母列号转换为对应的数字, AA:27。
print('2 : ',get_column_letter(2),'AA: ',column_index_from_string('AA') )
#('2 : ', 'B', 'AA: ', 27)
for rowNm in sheet['A1':'C20']:
for j in rowNm:
print(j.coordinate,j.value)
print('end of row : ',rowNm)
#创建表格
from openpyxl import Workbook
wbk=Workbook()
#active 为最后修改过的工作簿,无修改则默认为第一个工作簿
wst=wbk.active
#添加工作簿
wst1=wbk.create_sheet("Mysheet") #insert at the end(default)
wst2=wbk.create_sheet("Msheet",0) #insert at first position
#工作簿的名字,在创建时不设置有默认值,创建后可通过属性title进行修改
wst.title="New Title"
#给工作簿标签添加颜色通过RRGGBB颜色码,默认为白色
wst.sheet_properties.tabColor="1072BA"
#删除工作簿
wbk.remove_sheet(wbk['Mysheet'])
#也可通过表格的键值表示一个工作簿
ws3=wbk["New Title"]
#获取表格的所有工作簿名
print(wbk.sheetnames)
#也可以循环表格
for sheet in wbk:
print(sheet.title)
#复制工作簿
target=wbk.copy_worksheet(wst)
#工作簿的单元格
d=wst.cell(row=4,column=2,value=10)
#单元格区域的表示方法
colC=wst['C'] #C列
col_range=wst['C:D']#C列到D列
row10=wst[10] #第10行
row_range=wst[5:10] #第5行到第10行
#方法 循环单元格区域的方法 iter_rows()一行一行的迭代,iter_cols()一列一列的迭代
for row in wst.iter_rows(min_row=1,max_col=3,max_row=2):
for cell in row:
print(cell)
'''
<Cell 'Mysheet'.A1>
<Cell 'Mysheet'.B1>
<Cell 'Mysheet'.C1>
<Cell 'Mysheet'.A2>
<Cell 'Mysheet'.B2>
<Cell 'Mysheet'.C2>
'''
for col in wst.iter_cols(min_row=1,max_col=3,max_row=2):
for cell in col:
print(cell)
#如果要遍历整个工作簿,可使用属性rows或columns
for s in tuple(wst.columns):
print(s)
'''
(<Cell 'Mysheet'.A1>, <Cell 'Mysheet'.A2>, <Cell 'Mysheet'.A3>, <Cell 'Mysheet'.A4>, <Cell 'Mysheet'.A5>, <Cell 'Mysheet'.A6>, <Cell 'Mysheet'.A7>, <Cell 'Mysheet'.A8>, <Cell 'Mysheet'.A9>, <Cell 'Mysheet'.A10>)
(<Cell 'Mysheet'.B1>, <Cell 'Mysheet'.B2>, <Cell 'Mysheet'.B3>, <Cell 'Mysheet'.B4>, <Cell 'Mysheet'.B5>, <Cell 'Mysheet'.B6>, <Cell 'Mysheet'.B7>, <Cell 'Mysheet'.B8>, <Cell 'Mysheet'.B9>, <Cell 'Mysheet'.B10>)
(<Cell 'Mysheet'.C1>, <Cell 'Mysheet'.C2>, <Cell 'Mysheet'.C3>, <Cell 'Mysheet'.C4>, <Cell 'Mysheet'.C5>, <Cell 'Mysheet'.C6>, <Cell 'Mysheet'.C7>, <Cell 'Mysheet'.C8>, <Cell 'Mysheet'.C9>, <Cell 'Mysheet'.C10>)
'''
import datetime
#写入数据
d.value=datetime.datetime.now()
wst['A2']='Hello world !'
print(d.value)
#datetime.datetime(2017, 7, 14, 16, 50, 43, 532788)
#同样可以写入公式
wst['A3']='=upper(A2)'
#检查公式,python 虽然不会计算公式的结果,但是可以检查公式的名字
from openpyxl.utils import FORMULAE
print('SUM' in FORMULAE)
#True
#调整数据格式
from openpyxl.styles import Font
italic24Font=Font(size=24,italic=True)
wst['A2'].font=italic24Font
#Font()有四个关键字参数 name 字体的名字(string),size 字体大小(integer),bold 粗体(boolean,True表示粗体),italic 斜体(boolean,True表示斜体)
fontObj1=Font(name='Times New Roman',bold=True)
#调整列宽column_dimensions,行高row_dimensions
wst.row_dimensions[1].height=70
wst.column_dimensions['B'].width=20
#1英寸=2.54厘米 。行高可以被设定为0~409间的浮点数或整数。一个单位相当于1/72英寸。默认行高是12.75个单位
#列宽可以被设定为0~255间的整数或浮点数。默认列宽是可以容纳8.43个11号字体的字母。
#如果行高或列宽被设置为0,则表示该行或该列被隐藏
#保存表格
wbk.save('e:\\work\\byPython.xlsx')
#表格的属性template,默认值为False,将其改为True则表示临时文件
wb=openpyxl.load_workbook('e:\\work\\byPython.xlsx')
wb.template=True
wb.save('e:\\work\\byPython_template.xltx')
#将临时文件保存为正式文件
wb=openpyxl.load_workbook('e:\\work\\byPython_template.xltx')
wb.template=False
#合并单元格
wst.merge_cells('A1:D3')
wst['A1']='twelve cells merged together.'
#取消合并
wst.unmerge_cells('A1:D3')
wbk.save('e:\\work\\byPython.xlsx')
#冻结窗格
#可以通过工作簿的属性freeze_panes设置冻结的单元格,当其值为None或‘A1’时,没有窗格会被冻结
wst.freeze_panes='A2' #将冻结第一行窗格
#创建图表
#通过图表的数据区域openpyxl.chart.Reference(),有三个入参第一个工作簿名;第二个参数两个数字组成的元组,区域的左边界;第三个参数,两个数字组成的元组,区域右边界。
refObj=openpyxl.chart.Reference(wst,min_col=1,min_row=1,max_col=1,max_row=10)
#创建图表数据元素
seriesObj=openpyxl.chart.Series(refObj,title='First series') #title 为图表中该数据名
#创建柱状图
chartObj=openpyxl.chart.BarChart()
#也可以创建折线图,散点图,扇形图 通过方法,openpyxl.chart.LineChart(),openpyxl.chart.ScatterChart(),openpyxl.chart.PieChart()
chartObj.title='My Chart'
#将数据加入柱状图对象
chartObj.append(seriesObj)
#将图表加入工作簿指定区域
wst.add_chart(chartObj,'C5')
wbk.save('e:\\work\\byPython.xlsx')
#不幸的是这个版本的openpyxl加载表格的功能load_workbook()不会加载表格中的图表,所以加载一个有图表的表格后,再立刻保存,图表就会被删除。
openpyxl读取Excel数据的更多相关文章
- 浅谈python之利用pandas和openpyxl读取excel数据
在自学到接口自动化测试时, 发现要从excel中读取测试用例的数据, 假如我的数据是这样的: 最好是每行数据对应着一条测试用例, 为方便取值, 我选择使用pandas库, 先安装 pip instal ...
- 【python接口自动化】- openpyxl读取excel数据
前言:目前我们进行测试时用于存储测试数据的软件几乎都是excel,excel方便存储和管理数据,读取数据时也比较清晰,测试时我们需要从excel从读取测试数据,结束后还需把测试结果写入到excel中, ...
- python 读取excel数据并将测试结果填入Excel
python 读取excel数据并将测试结果填入Excel 读取一个Excel中的一条数据用例,请求接口,然后返回结果并反填到excel中.过程中会生成请求回来的文本,当然还会生成一个xml文件.具体 ...
- 机器学习之数据预处理,Pandas读取excel数据
Python读写excel的工具库很多,比如最耳熟能详的xlrd.xlwt,xlutils,openpyxl等.其中xlrd和xlwt库通常配合使用,一个用于读,一个用于写excel.xlutils结 ...
- java的poi技术读取Excel数据到MySQL
这篇blog是介绍java中的poi技术读取Excel数据,然后保存到MySQL数据中. 你也可以在 : java的poi技术读取和导入Excel了解到写入Excel的方法信息 使用JXL技术可以在 ...
- .NET读取Excel数据,提示错误:未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序
解决.NET读取Excel数据时,提示错误:未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序的操作: 1. 检查本机是否安装Office Access,如果未安装去去h ...
- oledbdataadapter 读取excel数据时,有的单元格内容不能读出
表现:excel中某列中,有的单元格左上角有绿色箭头标志,有的没有,c#编写读取程序,但是只能读取出带绿色箭头的单元格中的内容,其余不带的读取不到内容 原因:excel中单元格因为是文本格式而存储了数 ...
- Openxml入门---Openxm读取Excel数据
Openxml读取Excel数据: 有些问题,如果当Cell 里面是 日期和浮点型的话,对应的Cell.DataType==Null,对应的时间会转换为一个浮点型,对于这块可以通过DateTime.F ...
- C# 读取EXCEL数据
/// <summary> /// 读取EXCEL数据 /// </summary> /// <param name="Path">< ...
随机推荐
- (8)进程---Queue队列
# IPC Inter-Process Communication # 实现进程之间通信的两种机制: # 管道 Pipe 用的很少 # 队列 Queue 队列的特征:现进先出,栈属于后进后出 基本语法 ...
- 接口测试——带token请求post接口(postman学习)
今天遇到一个接口,是添加备注的,post类型,访问参数中需要带上token才行,我在header 中直接加token参数,接口总返回 403,请登陆 1.考虑yapi接口平台集成的是postman的接 ...
- 单细胞文章分享:Molecular Diversity of Midbrain Development in Mouse, Human, and Stem Cells
Molecular Diversity of Midbrain Development in Mouse, Human, and Stem Cells 本文作者的官网:Ventral midbrain ...
- English trip V1 - 23. Big and Bigger Teacher:Corrine Key: adjective comparisons 形容词 比较级
In this lesson you will learn to make comparisons. 课上内容(Lesson) compare n. 比较 vt. 比拟,喻为:[语]构成 vi ...
- jquery函数加载及生成随机数
$(document).ready(function () { var code ; //在全局定义验证码 1.将函数写好 function createCode(){ code = "&q ...
- Forbidden Subwords
pro: sol: 建出ac自动机. 一个合法的答案对应一条路径满足从一个scc走到另一个scc的路径. 发现这个题的方案数有可能是无限的. 会在以下两种情况无限: 因此,去掉无限情况后,环只有简单环 ...
- Django中cookie&session的实现
1.什么叫Cookie Cookie翻译成中文是小甜点,小饼干的意思.在HTTP中它表示服务器送给客户端浏览器的小甜点.其实Cookie是key-value结构,类似于一个python中的字典.随着服 ...
- Python特点
用一种方法,最好只用一种方法来做一件事 1.面向对象(解决一个问题,先考虑由“谁”来做,怎么做是“谁”的职责) 函数.模块.数字.字符串都是对象 在Python中一切皆对象 完全支持继承.重载.多重继 ...
- 『MXNet』第十弹_物体检测SSD
全流程地址 一.辅助API介绍 mxnet.image.ImageDetIter 图像检测迭代器, from mxnet import image from mxnet import nd data_ ...
- Activiti搭建
Activiti搭建 前期准备: JDK+Eclipse+Tomcat+Maven的安装与配置 参考:http://blog.csdn.net/zhshulin/article/details/307 ...