How to check if valid excel file in python xlrd library

Macumbaomuerte picture Macumbaomuerte · Feb 21, 2015 · Viewed 7.5k times · Source

Is there any way with xlrd library to check if the file you use is a valid excel file? I know there's other libraries to check headers of files and I could use file extension check. But for the sake of multiplatformness I wonder if there's any function I could use in the xlrd library itself that could just return something like false when trying to open the file and then notify the user.

I'm kind of new on Python so I tried getting something debugging the xlrd.open_workbook function with no success.

Answer

ndpu picture ndpu · Feb 21, 2015

You can try to open workbook but in try/except block to catch XLRDError exception in case if file format not supported:

>>> from xlrd import open_workbook, XLRDError
>>> try:
...     book = open_workbook('test.txt')
... except XLRDError as e:
...     print e
... 
Unsupported format, or corrupt file: Expected BOF record; found '--index-'

or use a simple function:

from xlrd import open_workbook, XLRDError

def test_book(filename):
    try:
        open_workbook(filename)
    except XLRDError:
        return False
    else:
        return True