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的更多相关文章

  1. python excel 读写

    python操作Excel读写--使用xlrd xlwt python中使用xlrd.xlwt操作excel表格详解

  2. 转 Python - openpyxl 读写操作Excel

    Python - openpyxl 读写操作Excel   openpyxl特点   openpyxl(可读写excel表)专门处理Excel2007及以上版本产生的xlsx文件,xls和xlsx之间 ...

  3. Java学习---Excel读写操作

    1.1.1. 简介 Apache POI 使用Apache POI 完成Excel读写操作 Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API ...

  4. python 文件读写操作(24)

    以前的代码都是直接将数据输出到控制台,实际上我们也可以通过读/写文件的方式读取/输出到磁盘文件中,文件读写简称I/O操作.文件I/O操作一共分为四部分:打开(open)/读取(read)/写入(wri ...

  5. NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))

    NX二次开发API里没有对EXCAL读写操作的相关函数,市面上有很多种方法去实现,比如UFUN调KF,ODBC,OLE(COM组件)等等.这里我是用的OLE(COM组件)方式去做的,这种在VC上创建的 ...

  6. NX二次开发-基于NX开发向导模板的NX对Excel读写操作(OLE方式(COM组件))

    在看这个博客前,请读者先去完整看完:NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))https://ufun-nxopen.blog.csdn.net/article ...

  7. Python如何读写Excel文件-使用xlrd/xlwt模块

    时间: 2020-08-18 整理: qiyuan 安装和导入 1.模块介绍 在 python 中使用 xlrd/xlwt 和 openpyxl 模块可以对Excel电子表格(xls.xlsx文件)进 ...

  8. Python excel读写

    # coding=utf-8 print "----------------分割线 xlrd--------------------" import xlrd #打开一个wordb ...

  9. python excel读写数据

    python 读取excel内容,包含表格日期处理 # -*- coding: utf- -*- import xlrd #读取excel表格 workbook=xlrd.open_workbook( ...

随机推荐

  1. python网络编程基础知识整理

  2. CWnd *和HWnd转换

      CWnd *和HWnd转换 CWnd*得到HWnd CWnd    wnd;   HWND    hWnd; hWnd    =    wnd.m_hWnd;           //    or ...

  3. freemarker自定义标签报错(四)

    freemarker自定义标签 1.错误描述 六月 05, 2014 11:31:35 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严 ...

  4. Caused by: org.xml.sax.SAXParseException; lineNumber: 28; columnNumber: 81;

    1.错误描述 严重: Exception sending context initialized event to listener instance of class org.springframe ...

  5. 无法连接MySQL

    1.错误描述 Error No. 2003 Can't connect to MySQL Server on 'localhost' (10061) 2.错误原因       打开任务管理器,关闭了m ...

  6. Caused by: java.lang.ClassNotFoundException: org.jboss.logging.BasicLogger

    1.错误描述 usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] [ -nonaming ] { -help ...

  7. C#总结(六)EventBus事件总线的使用-自己实现事件总线

    在C#中,我们可以在一个类中定义自己的事件,而其他的类可以订阅该事件,当某些事情发生时,可以通知到该类.这对于桌面应用或者独立的windows服务来说是非常有用的.但对于一个web应用来说是有点问题的 ...

  8. ssm整合快速入门程序(一)

    整合基础说明 spring 是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用.Spring是于2003 年兴起的一个轻量级的Jav ...

  9. 【BZOJ4237】稻草人(CDQ分治,单调栈)

    [BZOJ4237]稻草人(CDQ分治,单调栈) 题面 BZOJ 题解 \(CDQ\)分治好题呀 假设固定一个左下角的点 那么,我们可以找到的右下角长什么样子??? 发现什么? 在右侧是一个单调递减的 ...

  10. 【BZOJ4571】美味(主席树)

    [BZOJ4571]美味(主席树) 题面 Description 一家餐厅有 n 道菜,编号 1...n ,大家对第 i 道菜的评价值为 ai(1≤i≤n).有 m 位顾客,第 i 位顾客的期 望值为 ...