summaryrefslogtreecommitdiff
path: root/tablib/formats/_xls.py
diff options
context:
space:
mode:
Diffstat (limited to 'tablib/formats/_xls.py')
-rw-r--r--tablib/formats/_xls.py20
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."""