读书人

openpyxl读取xlsx文件匹配sheet名失

发布时间: 2013-01-01 14:04:19 作者: rapoo

openpyxl读取xlsx文件,匹配sheet名失败的错误不知道该如何捕获
#!/usr/bin/env python
# -*- coding:gbk-*-
'''

'''

import xlrd
import openpyxl
from openpyxl.reader.excel import load_workbook # 读文件

from openpyxl.workbook import Workbook
from openpyxl.writer.excel import ExcelWriter

from openpyxl.cell import get_column_letter


if __name__ == '__main__':


wb_r = load_workbook(filename=r'E:\handle_excel\src\e_1.xlsx')

try:
sheet_ranges_r = wb_r.get_sheet_by_name(name='range')
except (type(sheet_ranges_r) == 'NoneType'): # 尝试捕获异常
print "can not open file"
else:
print sheet_ranges_r.cell('A1').value # D18


以下是匹配失败的输出

Traceback (most recent call last):
File "E:\handle_excel\src\handle_excel_001.py", line 28, in <module>
print sheet_ranges_r.cell('A1').value # D18
AttributeError: 'NoneType' object has no attribute 'cell'

[解决办法]
get_sheet_by_name方法中没有cell这个属性
[解决办法]
貌似模块函数load_workbook和get_sheet_by_name有问题是返回None而不是抛出错误,所以用if语句判断即可,不一定非得使用异常处理方式..,
[解决办法]
#!/usr/bin/env python
# -*- coding:utf-8 -*-

import xlrd #xlrd已经够用

if __name__ == '__main__':
excel = xlrd.open_workbook(filename = r'E:\handle_excel\src\e_1.xlsx')
try:
#sheet = excel.sheet_by_name('aaaaaaaa')
sheet = excel.sheet_by_name('range')
except: # type(sheet_ranges_r) == 'NoneType'不必如此繁琐,语句也有错误,直接sheet_ranges_r
print "can not open file"
else:
print sheet.cell(0, 0).value

读书人网 >perl python

热点推荐