#! 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数据的更多相关文章

  1. 浅谈python之利用pandas和openpyxl读取excel数据

    在自学到接口自动化测试时, 发现要从excel中读取测试用例的数据, 假如我的数据是这样的: 最好是每行数据对应着一条测试用例, 为方便取值, 我选择使用pandas库, 先安装 pip instal ...

  2. 【python接口自动化】- openpyxl读取excel数据

    前言:目前我们进行测试时用于存储测试数据的软件几乎都是excel,excel方便存储和管理数据,读取数据时也比较清晰,测试时我们需要从excel从读取测试数据,结束后还需把测试结果写入到excel中, ...

  3. python 读取excel数据并将测试结果填入Excel

    python 读取excel数据并将测试结果填入Excel 读取一个Excel中的一条数据用例,请求接口,然后返回结果并反填到excel中.过程中会生成请求回来的文本,当然还会生成一个xml文件.具体 ...

  4. 机器学习之数据预处理,Pandas读取excel数据

    Python读写excel的工具库很多,比如最耳熟能详的xlrd.xlwt,xlutils,openpyxl等.其中xlrd和xlwt库通常配合使用,一个用于读,一个用于写excel.xlutils结 ...

  5. java的poi技术读取Excel数据到MySQL

    这篇blog是介绍java中的poi技术读取Excel数据,然后保存到MySQL数据中. 你也可以在 : java的poi技术读取和导入Excel了解到写入Excel的方法信息 使用JXL技术可以在 ...

  6. .NET读取Excel数据,提示错误:未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序

    解决.NET读取Excel数据时,提示错误:未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序的操作: 1. 检查本机是否安装Office Access,如果未安装去去h ...

  7. oledbdataadapter 读取excel数据时,有的单元格内容不能读出

    表现:excel中某列中,有的单元格左上角有绿色箭头标志,有的没有,c#编写读取程序,但是只能读取出带绿色箭头的单元格中的内容,其余不带的读取不到内容 原因:excel中单元格因为是文本格式而存储了数 ...

  8. Openxml入门---Openxm读取Excel数据

    Openxml读取Excel数据: 有些问题,如果当Cell 里面是 日期和浮点型的话,对应的Cell.DataType==Null,对应的时间会转换为一个浮点型,对于这块可以通过DateTime.F ...

  9. C# 读取EXCEL数据

       /// <summary> /// 读取EXCEL数据 /// </summary> /// <param name="Path">< ...

随机推荐

  1. HTML5-用canvas画布rotate字体旋转(中国象棋棋谱)。

    一开始我们老师安排我做这个作业,在这个作业我遇到了一个很重大的问题就是,文字旋转这么旋转,我查了很多资料. 1发现绘画正方形,使他正方形中心原点旋转非常容易理解.(我相信这个很多人看一下都会懂,) 1 ...

  2. 动态规划-独特的子字符串存在于Wraparound String总个数 Unique Substrings in Wraparound String

    2018-09-01 22:50:59 问题描述: 问题求解: 如果单纯的遍历判断,那么如何去重保证unique是一个很困难的事情,事实上最初我就困在了这个点上. 后来发现是一个动态规划的问题,可以将 ...

  3. Android SDK无法更新的解决方法

    一.说明: Android 更新sdk时访问google很慢,有时连接不上,可利用国内的某些镜像网站实现Android SDK在线更新. 二.解决方法: 在SDK Manager -> tool ...

  4. Ubuntu更改源和搜狗输入法安装卸载

    安装完Ubuntu 16.04后,要更换为国内的软件源: sudo gedit /etc/apt/sources.list   #用文本编辑器打开源列表 在文件开头添加下面的阿里云的软件源: deb ...

  5. 20181011xlVba提取邮箱手机号码

    Sub TransferData() AppSettings Dim StartTime As Variant Dim UsedTime As Variant StartTime = VBA.Time ...

  6. android--------性能优化之Allocation Tracker

    Allocation Tracker 能做什么? 追踪内存分配信息,按顺序排列,这样我们就能清晰看出来某一个操作的内存是如何一步一步分配出来的.比如在有内存抖动的可疑点,我们可以通过查看其内存分配轨迹 ...

  7. 标准化数据-StandardScaler

    StandardScaler----计算训练集的平均值和标准差,以便测试数据集使用相同的变换 官方文档: class sklearn.preprocessing.StandardScaler(copy ...

  8. 漏洞复现——bash远程解析命令执行漏洞

    漏洞描述:Bash脚本在解析某些特殊字符串时出现逻辑错误导致可以执行后面的命令,在一些cgi脚本中,数据是通过环境变量来传递的,这样就会形成该漏洞 漏洞原理:bash通过以函数名作为环境变量名,以“( ...

  9. vue 监听store中的数值

      computed: {   isFollow () {     return this.$store.state.demo.id; //需要监听的数据   } }, watch: {   isFo ...

  10. javascript的倒计时功能中newData().getTime()在iOS下会报错问题解决

    javascript的倒计时功能中newData().getTime()在iOS下会报错问题解决 在做移动端时间转化为时间戳时,遇到了一个问题,安卓手机上访问时,能拿到时间戳,从而正确转换时间,而在i ...