From 434c3448a5bf003f6f6556858f5452fd6b425c3a Mon Sep 17 00:00:00 2001 From: "Alexandre Fayolle @ camptocamp" Date: Fri, 23 Nov 2012 15:01:40 +0100 Subject: [PATCH] [FIX] account_statement_base_import: when importing from excel, use the date mode of the file, and not a hardcoded value > > See http://stackoverflow.com/questions/3727916/xldate-as-tuple for a detailed explanation --- account_statement_base_import/parser/file_parser.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/account_statement_base_import/parser/file_parser.py b/account_statement_base_import/parser/file_parser.py index 29115d46..1e8f0e17 100644 --- a/account_statement_base_import/parser/file_parser.py +++ b/account_statement_base_import/parser/file_parser.py @@ -59,6 +59,9 @@ class FileParser(BankStatementImportParser): self.keys_to_validate = keys_to_validate self.convertion_dict = convertion_dict self.fieldnames = header + self._datemode = 0 # used only for xls documents, + # 0 means Windows mode (1900 based dates). + # Set in _parse_xls, from the contents of the file def _custom_format(self, *args, **kwargs): """ @@ -132,6 +135,7 @@ class FileParser(BankStatementImportParser): # We ensure that cursor is at beginig of file wb_file.seek(0) wb = xlrd.open_workbook(wb_file.name) + self._datemode = wb.datemode sheet = wb.sheet_by_index(0) header = sheet.row_values(0) res = [] @@ -166,7 +170,7 @@ class FileParser(BankStatementImportParser): for line in result_set: for rule in conversion_rules: if conversion_rules[rule] == datetime.datetime: - t_tuple = xlrd.xldate_as_tuple(line[rule], 1) + t_tuple = xlrd.xldate_as_tuple(line[rule], self._datemode) line[rule] = datetime.datetime(*t_tuple) else: line[rule] = conversion_rules[rule](line[rule])