@@ -44,12 +44,13 @@ class XLSheet(SheetReader):
44
44
45
45
Currently only support first sheet in the file
46
46
"""
47
- def __init__ (self , sheet , auto_detect_int = True , ** keywords ):
47
+ def __init__ (self , sheet , auto_detect_int = True , date_mode = 0 , ** keywords ):
48
48
SheetReader .__init__ (self , sheet , ** keywords )
49
49
self .__auto_detect_int = auto_detect_int
50
50
self .__hidden_cols = []
51
51
self .__hidden_rows = []
52
52
self .__merged_cells = {}
53
+ self ._book_date_mode = date_mode
53
54
if keywords .get ('detect_merged_cells' ) is True :
54
55
for merged_cell_ranges in sheet .merged_cells :
55
56
merged_cells = MergedCell (* merged_cell_ranges )
@@ -88,7 +89,7 @@ def cell_value(self, row, column):
88
89
value = self ._native_sheet .cell_value (row , column )
89
90
90
91
if cell_type == xlrd .XL_CELL_DATE :
91
- value = xldate_to_python_date (value )
92
+ value = xldate_to_python_date (value , self . _book_date_mode )
92
93
elif cell_type == xlrd .XL_CELL_NUMBER and self .__auto_detect_int :
93
94
if has_no_digits_in_float (value ):
94
95
value = int (value )
@@ -176,7 +177,8 @@ def read_all(self):
176
177
return result
177
178
178
179
def read_sheet (self , native_sheet ):
179
- sheet = XLSheet (native_sheet , ** self ._keywords )
180
+ sheet = XLSheet (native_sheet , date_mode = self ._native_book .datemode ,
181
+ ** self ._keywords )
180
182
return {sheet .name : sheet .to_array ()}
181
183
182
184
def _get_book (self , on_demand = False ):
@@ -208,11 +210,12 @@ def _extract_xlrd_params(self):
208
210
return params
209
211
210
212
211
- def xldate_to_python_date (value ):
213
+ def xldate_to_python_date (value , date_mode ):
212
214
"""
213
215
convert xl date to python date
214
216
"""
215
- date_tuple = xlrd .xldate_as_tuple (value , 0 )
217
+ date_tuple = xlrd .xldate_as_tuple (value , date_mode )
218
+
216
219
ret = None
217
220
if date_tuple == (0 , 0 , 0 , 0 , 0 , 0 ):
218
221
ret = datetime .datetime (1900 , 1 , 1 , 0 , 0 , 0 )
0 commit comments