Skip to content

Commit 680731d

Browse files
authored
Merge pull request #49 from vinraspa/dev
Update xlsw.py: fix timedelta support
2 parents 4b774fc + 8f7e6f7 commit 680731d

File tree

2 files changed

+5
-8
lines changed

2 files changed

+5
-8
lines changed

pyexcel_xls/xlsw.py

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
DEFAULT_DATE_FORMAT = "DD/MM/YY"
1818
DEFAULT_TIME_FORMAT = "HH:MM:SS"
19+
DEFAULT_LONGTIME_FORMAT = "[HH]:MM:SS"
1920
DEFAULT_DATETIME_FORMAT = "%s %s" % (DEFAULT_DATE_FORMAT, DEFAULT_TIME_FORMAT)
2021
EMPTY_SHEET_NOT_ALLOWED = "xlwt does not support a book without any sheets"
2122

@@ -53,13 +54,9 @@ def write_row(self, array):
5354
style = XFStyle()
5455
style.num_format_str = DEFAULT_DATETIME_FORMAT
5556
elif isinstance(value, datetime.timedelta):
56-
hours = value.days * 24 + value.seconds // 3600
57-
minutes = (value.seconds // 60) % 60
58-
seconds = value.seconds % 60
59-
tmp_array = [hours, minutes, seconds]
60-
value = xlrd.xldate.xldate_from_time_tuple(tmp_array)
57+
value = value.days + value.seconds / 86_400
6158
style = XFStyle()
62-
style.num_format_str = DEFAULT_TIME_FORMAT
59+
style.num_format_str = DEFAULT_LONGTIME_FORMAT
6360
elif isinstance(value, datetime.date):
6461
tmp_array = [value.year, value.month, value.day]
6562
value = xlrd.xldate.xldate_from_date_tuple(tmp_array, 0)

tests/test_formatters.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ def test_writing_date_format(self):
5656
assert r[0, 1].strftime("%H:%M:%S") == "11:11:11"
5757
assert isinstance(r[0, 2], datetime.date) is True
5858
assert r[0, 2].strftime("%d/%m/%y %H:%M:%S") == "25/12/14 11:11:11"
59-
assert isinstance(r[0, 2], datetime.timedelta)
60-
assert r[0, 1].strftime("%H:%M:%S") == "3:30:20"
59+
assert isinstance(r[0, 3], datetime.datetime)
60+
assert r[0, 3].strftime("%D-%H:%M:%S") == "03/04/00-08:05:56"
6161
os.unlink(excel_filename)
6262

6363

0 commit comments

Comments
 (0)