欢迎加入Python学习交流QQ群:535993938 禁止闲聊 ! 名额有限 ! 非喜勿进 !
欢迎加入Python学习交流QQ群:535993938 禁止闲聊 ! 名额有限 ! 非喜勿进 !
python读excel——xlrd
这个过程有几个比较麻烦的问题,比如读取日期、读合并单元格内容。下面先看看基本的操作:
首先读一个excel文件,有两个sheet,测试用第二个sheet,sheet2内容如下:
python 对 excel基本的操作如下:
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
|
# -*- coding: utf-8 -*-
import
xlrd
import
xlwt
from
datetime
import
date,datetime
def
read_excel():
# 打开文件
workbook
=
xlrd.open_workbook(r
'F:\demo.xlsx'
)
# 获取所有sheet
print
workbook.sheet_names()
# [u'sheet1', u'sheet2']
sheet2_name
=
workbook.sheet_names()[
1
]
# 根据sheet索引或者名称获取sheet内容
sheet2
=
workbook.sheet_by_index(
1
)
# sheet索引从0开始
sheet2
=
workbook.sheet_by_name(
'sheet2'
)
# sheet的名称,行数,列数
print
sheet2.name,sheet2.nrows,sheet2.ncols
# 获取整行和整列的值(数组)
rows
=
sheet2.row_values(
3
)
# 获取第四行内容
cols
=
sheet2.col_values(
2
)
# 获取第三列内容
print
rows
print
cols
# 获取单元格内容
print
sheet2.cell(
1
,
0
).value.encode(
'utf-8'
)
print
sheet2.cell_value(
1
,
0
).encode(
'utf-8'
)
print
sheet2.row(
1
)[
0
].value.encode(
'utf-8'
)
# 获取单元格内容的数据类型
print
sheet2.cell(
1
,
0
).ctype
if
__name__
=
=
'__main__'
:
read_excel()
|
运行结果如下:
那么问题来了,上面的运行结果中红框框中的字段明明是出生日期,可显示的确实浮点数。好的,来解决第一个问题:
1、python读取excel中单元格内容为日期的方式
python读取excel中单元格的内容返回的有5种类型,即上面例子中的ctype:
1
|
ctype :
0
empty,
1
string,
2
number,
3
date,
4
boolean,
5
error
|
即date的ctype=3,这时需要使用xlrd的xldate_as_tuple来处理为date格式,先判断表格的ctype=3时xldate才能开始操作。现在命令行看下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
>>> sheet2.cell(
2
,
2
).ctype
#1990/2/22
>>> sheet2.cell(
2
,
1
).ctype
#24
>>> sheet2.cell(
|