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