parent
40462db489
commit
94aec7c9bb
|
@ -1,6 +1,15 @@
|
|||
Change log
|
||||
================================================================================
|
||||
|
||||
0.5.7 - 15.03.2018
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Added
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
#. `pyexcel#54 <https://github.com/pyexcel/pyexcel/issues/54>`_, Book.datemode
|
||||
attribute of that workbook should be passed always.
|
||||
|
||||
0.5.6 - 15.03.2018
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
|
|
@ -44,12 +44,13 @@ class XLSheet(SheetReader):
|
|||
|
||||
Currently only support first sheet in the file
|
||||
"""
|
||||
def __init__(self, sheet, auto_detect_int=True, **keywords):
|
||||
def __init__(self, sheet, auto_detect_int=True, date_mode=0, **keywords):
|
||||
SheetReader.__init__(self, sheet, **keywords)
|
||||
self.__auto_detect_int = auto_detect_int
|
||||
self.__hidden_cols = []
|
||||
self.__hidden_rows = []
|
||||
self.__merged_cells = {}
|
||||
self._book_date_mode = date_mode
|
||||
if keywords.get('detect_merged_cells') is True:
|
||||
for merged_cell_ranges in sheet.merged_cells:
|
||||
merged_cells = MergedCell(*merged_cell_ranges)
|
||||
|
@ -88,7 +89,7 @@ class XLSheet(SheetReader):
|
|||
value = self._native_sheet.cell_value(row, column)
|
||||
|
||||
if cell_type == xlrd.XL_CELL_DATE:
|
||||
value = xldate_to_python_date(value)
|
||||
value = xldate_to_python_date(value, self._book_date_mode)
|
||||
elif cell_type == xlrd.XL_CELL_NUMBER and self.__auto_detect_int:
|
||||
if has_no_digits_in_float(value):
|
||||
value = int(value)
|
||||
|
@ -176,7 +177,8 @@ class XLSBook(BookReader):
|
|||
return result
|
||||
|
||||
def read_sheet(self, native_sheet):
|
||||
sheet = XLSheet(native_sheet, **self._keywords)
|
||||
sheet = XLSheet(native_sheet, date_mode=self._native_book.datemode,
|
||||
**self._keywords)
|
||||
return {sheet.name: sheet.to_array()}
|
||||
|
||||
def _get_book(self, on_demand=False):
|
||||
|
@ -208,11 +210,12 @@ class XLSBook(BookReader):
|
|||
return params
|
||||
|
||||
|
||||
def xldate_to_python_date(value):
|
||||
def xldate_to_python_date(value, date_mode):
|
||||
"""
|
||||
convert xl date to python date
|
||||
"""
|
||||
date_tuple = xlrd.xldate_as_tuple(value, 0)
|
||||
date_tuple = xlrd.xldate_as_tuple(value, date_mode)
|
||||
|
||||
ret = None
|
||||
if date_tuple == (0, 0, 0, 0, 0, 0):
|
||||
ret = datetime.datetime(1900, 1, 1, 0, 0, 0)
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
import os
|
||||
import pyexcel as pe
|
||||
from pyexcel_xls import save_data
|
||||
from pyexcel_xls.xlsr import xldate_to_python_date
|
||||
from pyexcel_xls.xlsw import XLSWriter as Writer
|
||||
from _compact import OrderedDict
|
||||
from nose.tools import eq_, raises
|
||||
|
@ -100,5 +101,11 @@ def test_empty_book_pyexcel_issue_120():
|
|||
writer.write({})
|
||||
|
||||
|
||||
def test_pyexcel_issue_54():
|
||||
xlvalue = 41071.0
|
||||
date = xldate_to_python_date(xlvalue, 1)
|
||||
eq_(date, datetime.date(2016, 6, 12))
|
||||
|
||||
|
||||
def get_fixture(file_name):
|
||||
return os.path.join("tests", "fixtures", file_name)
|
||||
|
|
Loading…
Reference in New Issue