记录学习笔记、分享资源工具、交流技术思想、提升工作效率

python2处理excel表格

后端 xiaomudk 6年前 (2015-06-27) 1220次浏览 0个评论
文章目录[隐藏]

使用 xlrd 能够很方便的读取 excel 文件内容, 而且这是个跨平台的库,能够在windows,linux/unix,等平台上面使用。

1. 安装xlrd

# easy_install xlrd  或者
# pip install xlrd

2.读取excel

获取xls里的数据简单来说分三步:

a.打开xls
b.指定要读的sheets
c.获取坐标对应的值

表格如下:
server_list.xls

(1).获取sheets(工作薄)列表

#!/usr/bin/python
# coding:utf-8

import  xlrd
myxls= xlrd.open_workbook('./server_list.xls')
print 'sheet_names:',myxls.sheet_names()
print 'sheets:',myxls.sheets()
print 'sheets_sum:',myxls.nsheets

输出:

sheet_names: [u'sheet1', u'sheet2', u'sheet3', u'sheet4', u'sheet5', u'sheet6']
sheets: [<xlrd.sheet.Sheet object at 0x02829E30>, <xlrd.sheet.Sheet object at 0x0282EB30>, <xlrd.sheet.Sheet object at 0x02832190>, <xlrd.sheet.Sheet object at 0x02832430>, <xlrd.sheet.Sheet object at 0x02835110>, <xlrd.sheet.Sheet object at 0x028351B0>]
sheets_sum: 6

sheet_names()方法是获取sheets的名称;
sheets()方法是获取所有的sheets对象,获取到对象就可以进行下一步操作。
nsheets 属于是获取sheets的数量

(2). 获取指定的sheets

#!/usr/bin/python
# coding:utf-8

import  xlrd
myxls= xlrd.open_workbook('./server_list.xls')
print myxls.sheets()[0]       #通过索引来获取sheet, 参看上面的sheets()方法
print myxls.sheet_by_index(0) #通过索引来获取sheet, 0表示第1个
print myxls.sheet_by_name(u'sheet1')  #通过sheet名称来获取sheet

输出:

<xlrd.sheet.Sheet object at 0x02743CD0>
<xlrd.sheet.Sheet object at 0x02743CD0>
<xlrd.sheet.Sheet object at 0x02743CD0>

参考资料: open_workbook类可以使用的属性及方法

参考资料: sheet对象的方法及属性介绍

(3). 获取指定sheets里的内容

a.获取行数、列数、及sheet名称

print first_sheet.nrows         #获取sheet行数
print first_sheet.ncols         #获取sheet列数
print first_sheet.name          #获取sheet名称

输出:

19
9
sheet1

b.获取指定的行或列

print first_sheet.col_values(2)    #打印第3列(坐标从0开始计算)
print first_sheet.row_values(2)    #打印第3行

输出:

['', u'\u5916\u7f51ip', u'110.110.58.21', u'110.110.58.22', u'110.110.58.23', u'110.110.58.24', u'110.110.58.25', u'110.110.58.26', u'110.110.58.27', u'110.110.58.28', u'110.110.58.29', u'110.110.58.30', u'110.110.58.31', u'110.110.58.32', u'110.110.58.33', u'110.110.58.34', u'110.110.58.35', u'110.110.58.36', u'110.110.58.37']
[u'\u5b89\u5353', u'\u6e38\u620f\u670d', u'110.110.58.21', u'10.22.58.21', 22.0, u'test2-AUDIT-21', u'16C/32G/600G', '', u'\u6e38\u620f\u670d']

b.获取指定坐标的单元格

#!/usr/bin/python
# coding:utf-8

import  xlrd
myxls= xlrd.open_workbook('./server_list.xls')
first_sheet = myxls.sheet_by_name(u'sheet1')  #通过sheet名称来获取sheet

print first_sheet.cell(1,2)                  #返回单元格的类型及内容
print 'type:',first_sheet.cell(1,2).ctype
print 'value:',first_sheet.cell(1,2).value

print 'type:',first_sheet.cell_type(1,2)
print 'value',first_sheet.cell_value(1,2)

输出:

text:u'\u5916\u7f51ip'
type: 1
value: 外网ip
type: 1
value 外网ip

cell()方法和cell_type、cell_value都可以获取单元格的类型和内容(cell_type、cell_value速度更快一点,查看源码便可知道)

cell方法就是获取指定坐标单元格的内容,cell(x,y);其它x为x轴坐标(从0开始算起),y为y轴坐标(从0开始算起)

其中ctype上获取表格单元格的类型(对应关系: 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error)

value 是获取单元格里的内容


本网站采用知识共享署名-相同方式共享 4.0 国际许可协议进行授权
转载请注明原文链接:python2处理excel表格
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址