首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

openpyxl读取xlsx文件,匹配sheet名失败的异常不知道该怎么捕获

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

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

热点排行