Python:xlrd和xlwt模块操作Excel使用详解

版权声明:转载请标明出处 https://blog.csdn.net/w1418899532/article/details/84529336

python提供了从Excel表格中读取数据的模块xlrd,和xlwt模块将数据写入Excel表格。

xlrd和xlwt模块需要我们自己安装。

1.准备工作

1.安装

  • 外网安装方法
    pip install xlrd
    pip install xlwt

  • 内网安装方法
    a.在python官网下载http://pypi.python.org/pypi/xlrdxlrd下载xlrd的安装包。
    b.压缩包放置在python安装目录下python/Lib/site-packages。
    c.解压压缩包:tar zxvf xlrd-1.0.0.tar.gz
    d.进入到解压的文件夹:cd xlrd-1.0.0
    e.执行命令:python setup,py install

2.测试
打来终端,python—>import xlrd。如果不报no xlrd module错误表示安装成功。

2.xlrd使用详解

  • 1.打开Excel表格文件读取数据

    #加上utf-8编码,放置遇到中文字符时乱码
    data = xlrd.open_workbook(filename,encoding_override = ‘utf-8’)

问题:
1.文件名若包含中文,会报错找不到这个文件或目录。
2.获取sheet时若包含中文,也会报错。

解决方法1:
xlrd.open_workbook()函数中加上encoding_override = 'utf-8’属性。
解决方法2:
对参数进行utf8转码,如:filename = filename.decode(‘utf-8’)

¥获取sheet工作表和对象

  • 1.通过指定索引获取sheet工作表名称
    sheet_name = data.sheet_names()[0]

  • 2.通过sheet工作表名称获取sheet对象
    table =data.sheet_by_name(sheet_name)

  • 3.通过sheet索引获取sheet工作表的对象
    table = data.sheet_by_index(0)

  • 4.获取所有sheet工作表的名字
    sheetnames = data.sheet_names() #返回book中所有工作表的名字

  • 5.检查某个sheet是否导入完毕
    data.sheet_loaded(sheet_name or indx)

¥.行操作列操作

  • 1.获取行数和列数
    nrows=table.nrows #总行数
    ncols = table.ncols #总列数
  • 2.获得指定行列的值
    返回对象为该行该列中所有单元格的数据组成的列表。
    row_data = table.row_values(1) #获得第2行的数据列表
    col_data = table.col_values(1) #获得第2列的数据列表
    table.row_len(rowx) #返回该列的有效单元格长度

¥单元格操作
单元格是组成表格的最小单位,可以拆分或者合并。每个数据的输入和修改都是在单元格中进行的。

  • 单元格对象
    table.cell(rowx,colx) #返回单元格对象
  • 单元格数据类型
    table.cell_type(rowx,colx) #返回单元格中的数据类型
  • 求单元格中的数据
    table.cell_value(rowx,colx) #返回单元格中的数据

表格属性

  • 单元格数据类型

    • 0.empty(空的)
    • 1.string(text)
    • 2.number
    • 3.date
    • 4.boolean
    • 5.error
    • 6.blank(空白表格)
  • 获取单元格内容的数据类型
    ctype=sheet2.cell(1,0).ctype #第2行第1列内容数据类型

¥使用实例
可以封装成函数使用。

import xlrd
def getFiledData(filename):
    #字段结构字典{'id_0001-1',{'02D0005',''账号ID},}
    getfiledDict={}
    onesheetDict={}
    #打开Excel表格文件
    xlsdata = xlrd.open_workbook(filename,encoding_override = 'utf-8')
    #获取所有的sheet
    tableList = xlsdata.sheet_names()
    #循环读表中每行保存需要内容
    for tablenum in tableList:
        #获取工作表
        table = xlsdata.sheet_by_name(tablenum)
        #行
        nrows=table.nrows
        for rownum in range(1,nrows):
            chinesename = table.cell_value(rownum,2)
            mustfileds = table.cell_value(rownum,6)
            onesheetDict[chinesename]=mustfileds
            
        getfiledDict[tablenum]=onesheetDict
        #每张表读完初始化
        onesheetDict={}
    return getfiledDict

3.xlwt基本操作

#coding: utf-8
import xlwt
#创建一个table对象,使用utf-8编码,并设定压缩比
table = xlwt.Workbook(encoding='utf-8', style_compression=0)
#添加一个sheet对象
sheet = table.add_sheet('sheet 1',cell_overwrite_ok=True) #第二个参数用于确认同一个cell单元是否可以重设值
sheet.write(0,0,'sometext') #往指定单元格写入数据
sheet.write(0,0,'overwrite') #覆盖写入,需要cell_overwrite_ok=True
#设定单元格风格,指定字体格式等
style = xlwt.XFStyle()
font = xlwt.Font()
font.name = 'Times New Roman'
font.bold = True
style.font = font
sheet.write(0,1,'text', style)
table.save(r'E:\py\test.xls')  #该文件名必须存在


每天进步一点点、快乐一点点、开心一点点。good,come on!

猜你喜欢

转载自blog.csdn.net/w1418899532/article/details/84529336