【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读取合并单元格设定不一样
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 = 颜色代码

    style.pattern = ptn

    border = xlwt.Borders()

    border.left = xlwt.Borders.THICK

    border.top/right/bottom等等

时间: 2024-10-05 06:41:48

【Python】excel读写操作 xlrd & xlwt的相关文章

python excel读写操作

1.读操作 xlrd 下载地址:https://pypi.python.org/pypi/xlrd 使用代码 # encoding : utf-8 #设置编码方式 import xlrd #导入xlrd模块 #打开指定文件路径的excel文件 xlsfile = r'D:\AutoPlan\apisnew.xls' book = xlrd.open_workbook(xlsfile) #获得excel的book对象 #获取sheet对象,方法有2种: sheet_name=book.sheet_

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

在看这个博客前,请读者先去完整看完:NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))https://ufun-nxopen.blog.csdn.net/article/details/88922030 这篇博客,要不然你听不懂我下面在说什么. 版本NX11+VS2013+office2016 首先我们通过NX开发向导创建了一个模板. 先把项目属性改成多字节.下面我们把前面做的MFC项目里的几个EXCAL头文件和stdafx一块拷过来,加到NX的项目里. 在NX的

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

NX二次开发API里没有对EXCAL读写操作的相关函数,市面上有很多种方法去实现,比如UFUN调KF,ODBC,OLE(COM组件)等等.这里我是用的OLE(COM组件)方式去做的,这种在VC上创建的方法,无论C++还是C#还是VB方式思路都是一样的.先介绍用MFC去做,然后在写一篇博客介绍怎么在NX的二次开发的向导模板里去做.NX二次开发-基于NX开发向导模板的NX对Excel读写操作(OLE方式(COM组件))https://ufun-nxopen.blog.csdn.net/article

python之excel读写操作

一.xlrd和xlwt安装 1.下载xlwt安装包https://pypi.org/project/xlwt/#files 2.解压后进入文件目录 3.执行python setup.py install 二.读取操作 1 # -*- conding:utf-8 -*- 2 __author__ = 'dsh' 3 # How to read from an Excel using xlrd module 4 import xlrd 5 # 关联指定路径中的xls文件,得到book对象 6 fil

python excel读写与dict转换

学习excel读写,将一个excel文件内容转换为dict用于后续处理,将dict写入excel # coding = 'utf-8' import time import xlrd,xlsxwriter start = time.clock() def read_excel(file): """ 读入excel文件 :rtype : object :param file: :return: 数据对象 """ try: data = xlrd.o

JXL.jar简单封装Excel读写操作

1.分析 一个excel文件可以有多页,每页excel中可以有多行,每行中可以有多列,用面向对象的思想可以把一行中的某列看作是一个String对象,一行看作是一个包含多个列的对象,一页是包含多行的对面,一个excle文件就是包含多页的对象 2.行对象的设计 package com.zhaochao.utils; import java.util.List; /** * * excel的行对象 * * @author 赵超 * */ public class ExcelRow { private

python操作Excel读写(使用xlrd和xlrt)

包下载地址:https://pypi.python.org/pypi/xlrd 导入 import xlrd 打开excel data = xlrd.open_workbook('demo.xls') #注意这里的workbook首字母是小写 查看文件中包含sheet的名称 data.sheet_names() 得到第一个工作表,或者通过索引顺序 或 工作表名称 table = data.sheets()[0] table = data.sheet_by_index(0) table = dat

python操作Excel读写--使用xlrd(转)

一.安装xlrd模块 到python官网下载http://pypi.python.org/pypi/xlrd模块安装,前提是已经安装了python 环境. 二.使用介绍 1.导入模块 import xlrd 2.打开Excel文件读取数据 data = xlrd.open_workbook('excelFile.xls') 3.使用技巧 获取一个工作表 table = data.sheets()[0]          #通过索引顺序获取 table = data.sheet_by_index(

python操作Excel读写--使用xlrd

一.安装xlrd模块 到python官网下载http://pypi.python.org/pypi/xlrd模块安装,前提是已经安装了python 环境. 进入到解压文件路径,输入 setup.py install