【Python】excel读写操作 xlrd & xlwt
xlrd
■ xlrd
xlrd模块用于读取excel文件内容
基本用法:
workbook = xlrd.open_workbook('文件路径')
workbook.sheet_names() #返回所有sheet的列表
workbook.sheet_by_index(...) #通过index来获得一个sheet对象,index从0开始算起
workbook.sheet_by_name(...) #根据sheet名获得相应的那个sheet对象
在得到sheet对象之后,就可以用它的一些方法和变量来获取数据:
sheet.name sheet的名字
sheet.nrows sheet的行数
sheet.ncols sheet的列数
sheet.get_rows() 返回一个迭代器,遍历所有行,给出每个行的值列表
sheet.row_values(index) 返回某一行的值列表
sheet.row(index) 返回一个row对象,可以通过row[index]来获取这行里的单元格cell对象
sheet.col_values(index) 返回某一列的值列表
sheet.cell(row,col) 获取一个cell对象(row和col都从0开始算)
上面提到的cell对象就是一个单元格的抽象,cell对象有value变量来获取其值。 *value都是以unicode的形式存储的,如果内容是中文,记得要encode一下
要获得特定的cell对象的值有多种方法,如
sheet.cell(x,y).value
sheet.cell_value(x,y)
sheet.row(x)[y].value
除了value变量外,cell还有一些其他的变量和方法:
.ctype 返回该单元格数据类型的代码(0表示空,1表示string,2表示number,3表示date,4表示boolean,5表示error)。当ctype == 3 时,虽是日期,但那时python是按照float来处理的,需要用xldate_as_tuple方法来将其转化为日期格式,这个方法的用法就是xlrd.xldate_as_tuple(xldate,datemode), xldate表示一个ctype是3的一个值,datemode是属于workbook的一个属性。
*关于读取合并单元格
在默认情况中,合并单元格只在最左上角的子单元格可以读取到值,其他都是空的。为了解决此问题,在open_workbook时加上参数formatting_info = True (这个只支持excel97-03的xls文件)
这样,sheet.merged_cells会返回当前表中所有合并单元格的信息,格式是像[(7,8,2,5),(1,3,4,5)...]这样的一个列表。其中每一项都是一个单元格,比如(7,8,2,5)的意思是这个sheet中的第七行的第2-4行合并,和序列的分片操作一样,是算头不算尾,所以7,8是指合并的仅第七行(这个7不是index而是index+1),2,5则表示第二列到第四列,不包括第五列。这个“不算尾”的做法是区别于xlwt模块中的合并单元格处理的。
这么一来,想要知道某个合并单元格的值信息的话,只要关注每个元组的第一项和第三项就行了。
xlwt
xlwt用于写入excel,基本创建方法和xlrd类似:
wk = xlwt.Workbook()
st = wk.add_sheet('sheetname')
st.write(x,y,...,style) #意思是将内容...写入index为(x,y)的单元格内,style可以自定义,详情见下文
st.write(x,x+m,y,y+n,...,style) #可以直接写入一个合并单元格,x为开始的row的index,x+m是结束的row的index,y类似。注意:这里是包括x+m行的,和xlrd读取合并单元格设定不一样
'''
经试验,发现似乎并不能直接写入一个合并单元格,比较好的做法是首先调用merge方法合并出一个单元格,然后写入数据到合并单元格的最左上角的子单元格
'''
wk.save('路径') #保存文件
*关于style 可以单独定义一个def_style函数来统一处理
比如:
def def_style():
style = xlwt.XFStyle() ##########这部分设置字体#########
font = xlwt.Font()
font.name = 'Times New Roman' #或者换成外面传进来的参数,这样可以使一个函数定义所有style
font.bold = 'True'
font.height = '...'
font.size = '...'
font.colour_index('...')
style.font = font
########这部分设置居中格式#######
alignment = xlwt.Alignment()
alignment.horz = xlwt.Alignment.HORZ_CENTER #水平居中
alignment.vert = xlwt.Alignment.VERT_CENTER #垂直居中
style.alignment = alignment
#########还可以添加几个设置颜色,边框的部分##########
return style
#######################################
#核心意思是指,要通过这个函数来设置一些style的属性
#比如字体,居中格式等等
#最终再返回一个style
####################################### #这样在写入的时候就可以通过def_style()来返回一个style对象,来设置style了
xlwt.write(0,0,'test',def_style())
*单元格大小并不会根据内容的大小和多少自动调整,要通过
sheet.row(x).height = ...
sheet.col(x).width = ...
来调整单元格大小
*若要设置cell的背景色,边框等可以设置style的其他属性,比如
背景色要设置 style.pattern,如:
ptn = xlwt.Pattern()
ptn.pattern = xlwt.Pattern.SOLID_PATTERN
ptn.pattern_fore_colour = 颜色代码 //注意这个颜色代码不是RGB的六位颜色代码,而是xlwt内部的一套代码。具体可以参考xlwt.Styles中一些类似叫做color_map的数据,下表作参考:
aqua 0x31
black 0x08
blue 0x0C
blue_gray 0x36
bright_green 0x0B
brown 0x3C
coral 0x1D
cyan_ega 0x0F
dark_blue 0x12
dark_blue_ega 0x12
dark_green 0x3A
dark_green_ega 0x11
dark_purple 0x1C
dark_red 0x10
dark_red_ega 0x10
dark_teal 0x38
dark_yellow 0x13
gold 0x33
gray_ega 0x17
gray25 0x16
gray40 0x37
gray50 0x17
gray80 0x3F
green 0x11
ice_blue 0x1F
indigo 0x3E
ivory 0x1A
lavender 0x2E
light_blue 0x30
light_green 0x2A
light_orange 0x34
light_turquoise 0x29
light_yellow 0x2B
lime 0x32
magenta_ega 0x0E
ocean_blue 0x1E
olive_ega 0x13
olive_green 0x3B
orange 0x35
pale_blue 0x2C
periwinkle 0x18
pink 0x0E
plum 0x3D
purple_ega 0x14
red 0x0A
rose 0x2D
sea_green 0x39
silver_ega 0x16
sky_blue 0x28
tan 0x2F
teal 0x15
teal_ega 0x15
turquoise 0x0F
violet 0x14
white 0x09
yellow 0x0D
style.pattern = ptn
border = xlwt.Borders()
border.left = xlwt.Borders.THICK
border.top/right/bottom等等
【Python】excel读写操作 xlrd & xlwt的更多相关文章
- python excel 读写
python操作Excel读写--使用xlrd xlwt python中使用xlrd.xlwt操作excel表格详解
- 转 Python - openpyxl 读写操作Excel
Python - openpyxl 读写操作Excel openpyxl特点 openpyxl(可读写excel表)专门处理Excel2007及以上版本产生的xlsx文件,xls和xlsx之间 ...
- Java学习---Excel读写操作
1.1.1. 简介 Apache POI 使用Apache POI 完成Excel读写操作 Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API ...
- python 文件读写操作(24)
以前的代码都是直接将数据输出到控制台,实际上我们也可以通过读/写文件的方式读取/输出到磁盘文件中,文件读写简称I/O操作.文件I/O操作一共分为四部分:打开(open)/读取(read)/写入(wri ...
- NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))
NX二次开发API里没有对EXCAL读写操作的相关函数,市面上有很多种方法去实现,比如UFUN调KF,ODBC,OLE(COM组件)等等.这里我是用的OLE(COM组件)方式去做的,这种在VC上创建的 ...
- NX二次开发-基于NX开发向导模板的NX对Excel读写操作(OLE方式(COM组件))
在看这个博客前,请读者先去完整看完:NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))https://ufun-nxopen.blog.csdn.net/article ...
- Python如何读写Excel文件-使用xlrd/xlwt模块
时间: 2020-08-18 整理: qiyuan 安装和导入 1.模块介绍 在 python 中使用 xlrd/xlwt 和 openpyxl 模块可以对Excel电子表格(xls.xlsx文件)进 ...
- Python excel读写
# coding=utf-8 print "----------------分割线 xlrd--------------------" import xlrd #打开一个wordb ...
- python excel读写数据
python 读取excel内容,包含表格日期处理 # -*- coding: utf- -*- import xlrd #读取excel表格 workbook=xlrd.open_workbook( ...
随机推荐
- 深度拾遗(06) - 1X1卷积/global average pooling
什么是1X1卷积 11的卷积就是对上一层的多个feature channels线性叠加,channel加权平均. 只不过这个组合系数恰好可以看成是一个11的卷积.这种表示的好处是,完全可以回到模型中其 ...
- 关于 frame的一些基本知识
关于 frame的一些基本知识只是摘抄了一部分,供初学者参考. b.帧速率: 帧速率是每秒显示的图像数.标准影片(NTSC) 是29.97 帧第秒 (fps),电影是每秒24 帧fps.欧洲标准是(P ...
- Google最新的图片格式WEBP全面解析
前言 不管是 PC 还是移动端,图片一直是流量大头,以苹果公司 Retina 产品为代表的高 PPI 屏对图片的质量提出了更高的要求,如何保证在图片的精细度不降低的前提下缩小图片体积,成为了一个有价值 ...
- R语言︱异常值检验、离群点分析、异常值处理
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:异常值处理一般分为以下几个步骤:异常 ...
- Excel 2010高级应用-气泡图(八)
Excel 2010高级应用-气泡图(八) 基本操作如下: 1.新建空白文档,并命名为气泡图,找到插入中的气泡图样 2.在其他图表中找到气泡图图样 3.单击气泡图图样,生成空白气泡图框 4.在气泡图图 ...
- 真实场景的虚拟视点合成(View Synthsis)详解
上一篇博客中介绍了从拍摄图像到获取视差图以及深度图的过程,现在开始介绍利用视差图或者深度图进行虚拟视点的合成.虚拟视点合成是指利用已知的参考相机拍摄的图像合成出参考相机之间的虚拟相机位置拍摄的图像,能 ...
- gplots heatmap.2和ggplot2 geom_tile实现数据聚类和热图plot
主要步骤 ggplot2 数据处理成矩阵形式,给行名列名 hclust聚类,改变矩阵行列顺序为聚类后的顺序 melt数据,处理成ggplot2能够直接处理的数据结构,并加上列名 ggplot_tile ...
- es6的新特性--模板字符串
这几天简单看了一下深入浅出es6这本书,感觉特实用,学习了一个新特性---模板字符串在项目开发中,拼接字符串是不可缺少的,动态创建dom元素以及js操作数据都要拼接字符串,在es6出来之前,我们都通常 ...
- Java多线程之Callable接口的实现
Callable 和 Future接口 Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其它线程执行的任务. Callable和Runn ...
- C#异常处理--C#基础
try...catch:捕获异常try...finally:清除异常try..catch...finily:处理所有异常 1.捕获异常 using System; using System.Colle ...