diff options
Diffstat (limited to 'tablib/formats/_xls.py')
| -rw-r--r-- | tablib/formats/_xls.py | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/tablib/formats/_xls.py b/tablib/formats/_xls.py index 89d2845..6530d91 100644 --- a/tablib/formats/_xls.py +++ b/tablib/formats/_xls.py @@ -6,6 +6,8 @@ import sys from tablib.compat import BytesIO, xlwt +from tablib.packages import xlrd +from tablib.packages.xlrd.biffh import XLRDError import tablib title = 'xls' @@ -16,6 +18,24 @@ wrap = xlwt.easyxf("alignment: wrap on") bold = xlwt.easyxf("font: bold on") +def detect(stream): + """Returns True if given stream is a readable excel file.""" + try: + xlrd.open_workbook(file_contents=stream) + return True + except (TypeError, XLRDError): + pass + try: + xlrd.open_workbook(file_contents=stream.read()) + return True + except (AttributeError, XLRDError): + pass + try: + xlrd.open_workbook(filename=stream) + return True + except: + return False + def export_set(dataset): """Returns XLS representation of Dataset.""" |
