python导入excel模块_python模块xlrd读取excel文件

xlrd模块简介

python的xlrd模块主要用以读取和修改Excle文件。

下载地址:https://pypi.python.org/pypi。

xlrd模块常用方法

Python

data = xlrd.open_workbook('excelFile.xls') #打开Excel文件读取数据

table = data.sheets()[0] #获取一个工作表,通过索引顺序获取

table = data.sheet_by_index(0) #通过索引顺序获取

table = data.sheet_by_name(u'Sheet1')#通过名称获取

#获取整行和整列的值(数组)

table.row_values(i)

table.col_values(i)

#获取行数和列数

nrows = table.nrows

ncols = table.ncols

#循环行列表数据

for i in range(nrows ):

print table.row_values(i)

#单元格

cell_A1 = table.cell(0,0).value

cell_C4 = table.cell(2,3).value

#使用行列索引

cell_A1 = table.row(0)[0].value

cell_A2 = table.col(1)[0].value

#简单的写入

row = 0

col = 0

# 类型 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error

ctype = 1 value = '单元格的值'

xf = 0 # 扩展的格式化

table.put_cell(row, col, ctype, value, xf)

table.cell(0,0) #单元格的值'

table.cell(0,0).value #单元格的值'

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

data=xlrd.open_workbook('excelFile.xls')#打开Excel文件读取数据

table=data.sheets()[0]#获取一个工作表,通过索引顺序获取

table=data.sheet_by_index(0)#通过索引顺序获取

table=data.sheet_by_name(u'Sheet1')#通过名称获取

#获取整行和整列的值(数组)

table.row_values(i)

table.col_values(i)

#获取行数和列数

nrows=table.nrows

ncols=table.ncols

#循环行列表数据

foriinrange(nrows):

printtable.row_values(i)

#单元格

cell_A1=table.cell(0,0).value

cell_C4=table.cell(2,3).value

#使用行列索引

cell_A1=table.row(0)[0].value

cell_A2=table.col(1)[0].value

#简单的写入

row=0

col=0

# 类型 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error

ctype=1value='单元格的值'

xf=0# 扩展的格式化

table.put_cell(row,col,ctype,value,xf)

table.cell(0,0)#单元格的值'

table.cell(0,0).value#单元格的值'

xlrd模块使用实例

excel文件

qq_20170508083219.png

编写代码

Python

## Filename : lean001.py

# author by : www.py40.com

python操作Excel文档

import xlrd

import xlwt

def read_file(Filename):

print(Filename)

# 打开文件

workbook = xlrd.open_workbook(Filename)

# 获取所有sheet

print(workbook.sheet_names())

# 根据sheet索引或者名称获取sheet内容

sheet1 = workbook.sheet_by_index(0) # sheet索引从0开始

# 也可以通过名字获取索引 sheet1 = workbook.sheet_by_name('sheet1')

print(sheet1.name,sheet1.nrows,sheet1.ncols)

# 获取整行和整列的值(数组)

rows = sheet1.row_values(1)

# 获取第二行内容

cols = sheet1.col_values(2)

# 获取第三列内容

print (rows)

print (cols)

# 获取单元格内容

print (sheet1.cell(1,0))

print (sheet1.cell(1,0).value)

print (sheet1.row(1)[0].value)

if __name__ == '__main__':

read_file(r'E:\python\learn\demo.xls')

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

## Filename : lean001.py

# author by : www.py40.com

python操作Excel文档

importxlrd

importxlwt

defread_file(Filename):

print(Filename)

# 打开文件

workbook=xlrd.open_workbook(Filename)

# 获取所有sheet

print(workbook.sheet_names())

# 根据sheet索引或者名称获取sheet内容

sheet1=workbook.sheet_by_index(0)# sheet索引从0开始

# 也可以通过名字获取索引 sheet1 = workbook.sheet_by_name('sheet1')

print(sheet1.name,sheet1.nrows,sheet1.ncols)

# 获取整行和整列的值(数组)

rows=sheet1.row_values(1)

# 获取第二行内容

cols=sheet1.col_values(2)

# 获取第三列内容

print(rows)

print(cols)

# 获取单元格内容

print(sheet1.cell(1,0))

print(sheet1.cell(1,0).value)

print(sheet1.row(1)[0].value)

if__name__=='__main__':

read_file(r'E:\python\learn\demo.xls')

运行结果

Python

E:\python\python_tools.git\trunk\test>hello.py

E:\python\learn\demo1.xls

['sheet1']

sheet1 3 4

['1', '张三', '男', '1990-01-04']

['性别', '男', '女']

text:'1'

1

1

E:\python\python_tools.git\trunk\test>

1

2

3

4

5

6

7

8

9

10

11

E:\python\python_tools.git\trunk\test>hello.py

E:\python\learn\demo1.xls

['sheet1']

sheet134

['1','张三','男','1990-01-04']

['性别','男','女']

text:'1'

1

1

E:\python\python_tools.git\trunk\test>

简单写入Excel内容

Python

row = 0

col = 0

# 类型 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error

ctype = 1 value = '单元格的值'

xf = 0 # 扩展的格式化

table.put_cell(row, col, ctype, value, xf)

table.cell(0,0) #单元格的值'

table.cell(0,0).value #单元格的值'

1

2

3

4

5

6

7

8

row=0

col=0

# 类型 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error

ctype=1value='单元格的值'

xf=0# 扩展的格式化

table.put_cell(row,col,ctype,value,xf)

table.cell(0,0)#单元格的值'

table.cell(0,0).value#单元格的值'

日期数据的格式处理

我们再处理上面的文件过程中发现,日期显示为浮点数了。这个怎么处理呢?

python读取excel中单元格的内容返回的有5种类型,即上面例子中的ctype:

Python

ctype : 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error

1

ctype:0empty,1string,2number,3date,4boolean,5error

即date的ctype=3,这时需要使用xlrd的xldate_as_tuple来处理为date格式,先判断表格的ctype=3时xldate才能开始操作。

Python

if (sheet.cell(row,col).ctype == 3):

date_value = xlrd.xldate_as_tuple(sheet.cell_value(rows,3),book.datemode)

date_tmp = date(*date_value[:3]).strftime('%Y/%m/%d')

1

2

3

if(sheet.cell(row,col).ctype==3):

date_value=xlrd.xldate_as_tuple(sheet.cell_value(rows,3),book.datemode)

date_tmp=date(*date_value[:3]).strftime('%Y/%m/%d')

合并单元格的处理

读取文件的时候需要将formatting_info参数设置为True,默认是False,所以上面获取合并的单元格数组为空,

Python

>>> book = xlrd.open_workbook(r'E:\python\learn\demo.xls',formatting_info=True,e

ncoding_override="utf-8")

>>> sheet1 = book.sheet_by_index(0)

>>> sheet1.merged_cells

[(6, 7, 2, 4), (1, 3, 3, 4)]

1

2

3

4

5

>>>book=xlrd.open_workbook(r'E:\python\learn\demo.xls',formatting_info=True,e

ncoding_override="utf-8")

>>>sheet1=book.sheet_by_index(0)

>>>sheet1.merged_cells

[(6,7,2,4),(1,3,3,4)]

merged_cells返回的这四个参数的含义是:(row,row_range,col,col_range),其中[row,row_range)包括row,不包括row_range,col也是一样。

(6, 7, 2, 4)的含义是:第6到7行(不包括6),2到4列(不包括2)合并。

(1, 3, 3, 4)的含义是:第1到3行(不包括1)3到4列(不包括3)合并。

利用这个,可以分别获取合并的两个单元格的内容:

Python

>>> print(sheet1.cell_value(6,2))

暂无资料

>>> print(sheet1.cell_value(1,3))

33242.0

1

2

3

4

>>>print(sheet1.cell_value(6,2))

暂无资料

>>>print(sheet1.cell_value(1,3))

33242.0

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值