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. 沉淀,再出发——手把手教你使用VirtualBox搭建含有三个虚拟节点的Hadoop集群

    手把手教你使用VirtualBox搭建含有三个虚拟节点的Hadoop集群 一.准备,再出发 在项目启动之前,让我们看一下前面所做的工作.首先我们掌握了一些Linux的基本命令和重要的文件,其次我们学会 ...

  2. directdraw显示rgb555

    // TODO: 在此添加控件通知处理程序代码  height=width=widthBytes=0;  m_screen.SetWindowPos(&CWnd::wndBottom,0,0, ...

  3. U-Boot启动过程

    开发板上电后,执行U-Boot的第一条指令,然后顺序执行U-Boot启动函数.看一下board/smdk2410/u-boot.lds这个链接脚本,可以知道目标程序的各部分链接顺序.第一个要链接的是c ...

  4. Excel 2010高级应用-面积图(三)

    Excel 2010高级应用-面积图(三) 操作过程如下: 1.新建Excel空白文档,重新命名为面积图 2.单击"插入",找到面积图图样 3.选择其中一种类型的面积图,单击并在空 ...

  5. org.apache.jasper.JasperException: /pages/column.jsp (line: 8, column: 1) File "pathTags.jsp" not f

    1.错误描述 21-Mar-2015 00:57:40.934 INFO [localhost-startStop-2] org.apache.catalina.core.ApplicationCon ...

  6. java重写和重载

    方法的重载: 在一个类中的两个或两个以上的方法,他们方法名相同但是参数列表不同,这种方式称为方法的重载,方法的重载是实现多态性的方式之一. 参数列表不同指的是参数的个数不同或相同的个数但顺序不同或者类 ...

  7. Struts2(五)常量的配置

    Struts2 常量大多在 默认的配置文件中已经配置好,但根据用户的需求不同,开发的要求不同,需要修改这些常量值,修改的方法就是在配置的文件对常量进行重新配置 在struts.xml 文件中使用< ...

  8. hihocoder1388 Periodic Signal

    FFT 就可以了 比赛时候没时间做了 #include<bits/stdc++.h> using namespace std; typedef long long ll; const in ...

  9. 零基础6个月学好java月薪1w+看看他是怎么学好java的

    21世纪进入信息时代,信息科技给人类的生产和生活方式带来了深刻的变革,信息产业已成为推动国家经济发展的主导产业之一,Java作为含金量极高的一门IT技术,很多人希望从事这个行业,那么想学好Java,要 ...

  10. Link带参数的Verilog模块(Design Compiler)

    在Design Compiler中,Verilog文件可以用read_verilog命令读入,用link命令连接.以下是连接两个文件RegisterFile.v和Test.v的脚本: # Read d ...