原文出处:http://openexz.sinaapp.com/2010/07/26/%E5%A6%82%E4%BD%95%E8%A7%A3%E5%86%B3xlrd%E8%AF%BB%E5%8F%96excel%E6%97%B6%E7%9A%84%E4%B8%AD%E6%96%87%E5%BC%82%E5%B8%B8/
异常出现的代码:
1
2
3
4
5
6
7
8
|
# 打开excel
book
=
xlrd
.
open_workbook
(
filename
)
# 判断sheet个数
if
book
.
nsheets
<=
0
:
return
False
# 对第一个sheet做读取
sh
=
book
.
sheet_by_index
(
0
)
# ... ...
|
office创建出的文件中如果有中文的sheet_name,则xlrd会出现错误。从异常信息看出,问题出在了编码上,也就是xlrd会有一个默认的处理编码。
跟了一会代码就发现,open_workbook实际是创建了一个Book,然后Book中读取sheets信息,而编码设置就在Book的一个静态变量encoding中。于是代码可以写成这样子:
1
2
3
4
5
6
7
8
9
10
|
# 设置GBK编码
xlrd
.
Book
.
encoding
=
"gbk"
# 打开excel
book
=
xlrd
.
open_workbook
(
filename
)
# 判断sheet个数
if
book
.
nsheets
<=
0
:
return
False
# 对第一个sheet做读取
sh
=
book
.
sheet_by_index
(
0
)
# ... ...
|