From 4b9426d2e07cb10906606e82796b9e97de5719f4 Mon Sep 17 00:00:00 2001 From: vinraspa <78381185+vinraspa@users.noreply.github.com> Date: Sat, 2 Oct 2021 22:12:19 +0200 Subject: [PATCH 1/4] Update xlsw.py fix timedelta support --- pyexcel_xls/xlsw.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/pyexcel_xls/xlsw.py b/pyexcel_xls/xlsw.py index c07a9b3..8cdd32b 100644 --- a/pyexcel_xls/xlsw.py +++ b/pyexcel_xls/xlsw.py @@ -16,6 +16,7 @@ from pyexcel_io.plugin_api import IWriter, ISheetWriter DEFAULT_DATE_FORMAT = "DD/MM/YY" DEFAULT_TIME_FORMAT = "HH:MM:SS" +DEFAULT_LONGTIME_FORMAT = "[HH]:MM:SS" DEFAULT_DATETIME_FORMAT = "%s %s" % (DEFAULT_DATE_FORMAT, DEFAULT_TIME_FORMAT) EMPTY_SHEET_NOT_ALLOWED = "xlwt does not support a book without any sheets" @@ -53,13 +54,9 @@ class XLSheetWriter(ISheetWriter): style = XFStyle() style.num_format_str = DEFAULT_DATETIME_FORMAT elif isinstance(value, datetime.timedelta): - hours = value.days * 24 + value.seconds // 3600 - minutes = (value.seconds // 60) % 60 - seconds = value.seconds % 60 - tmp_array = [hours, minutes, seconds] - value = xlrd.xldate.xldate_from_time_tuple(tmp_array) + value = value.days + value.seconds / 86_400 style = XFStyle() - style.num_format_str = DEFAULT_TIME_FORMAT + style.num_format_str = DEFAULT_LONGTIME_FORMAT elif isinstance(value, datetime.date): tmp_array = [value.year, value.month, value.day] value = xlrd.xldate.xldate_from_date_tuple(tmp_array, 0) From f46b724920c6a227f6a8544c440a7fb853112996 Mon Sep 17 00:00:00 2001 From: vinraspa <78381185+vinraspa@users.noreply.github.com> Date: Sat, 2 Oct 2021 22:25:08 +0200 Subject: [PATCH 2/4] Update xlsw.py W291 trailing whitespace: fixed --- pyexcel_xls/xlsw.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyexcel_xls/xlsw.py b/pyexcel_xls/xlsw.py index 8cdd32b..4822cd3 100644 --- a/pyexcel_xls/xlsw.py +++ b/pyexcel_xls/xlsw.py @@ -56,7 +56,7 @@ class XLSheetWriter(ISheetWriter): elif isinstance(value, datetime.timedelta): value = value.days + value.seconds / 86_400 style = XFStyle() - style.num_format_str = DEFAULT_LONGTIME_FORMAT + style.num_format_str = DEFAULT_LONGTIME_FORMAT elif isinstance(value, datetime.date): tmp_array = [value.year, value.month, value.day] value = xlrd.xldate.xldate_from_date_tuple(tmp_array, 0) From 9b2275a2da615d900b7cd8820151f0b676b5e045 Mon Sep 17 00:00:00 2001 From: vinraspa <78381185+vinraspa@users.noreply.github.com> Date: Sat, 2 Oct 2021 22:47:42 +0200 Subject: [PATCH 3/4] Update test_formatters.py Bad cell ref [0, 2] -> [0, 3] --- tests/test_formatters.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_formatters.py b/tests/test_formatters.py index e87a017..6a0515f 100644 --- a/tests/test_formatters.py +++ b/tests/test_formatters.py @@ -56,7 +56,7 @@ class TestDateFormat: assert r[0, 1].strftime("%H:%M:%S") == "11:11:11" assert isinstance(r[0, 2], datetime.date) is True assert r[0, 2].strftime("%d/%m/%y %H:%M:%S") == "25/12/14 11:11:11" - assert isinstance(r[0, 2], datetime.timedelta) + assert isinstance(r[0, 3], datetime.timedelta) assert r[0, 1].strftime("%H:%M:%S") == "3:30:20" os.unlink(excel_filename) From 8f7e6f765c093af16a143416557017b4890ec43d Mon Sep 17 00:00:00 2001 From: vinraspa <78381185+vinraspa@users.noreply.github.com> Date: Sat, 2 Oct 2021 23:04:43 +0200 Subject: [PATCH 4/4] Update test_formatters.py --- tests/test_formatters.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_formatters.py b/tests/test_formatters.py index 6a0515f..a3c7518 100644 --- a/tests/test_formatters.py +++ b/tests/test_formatters.py @@ -56,8 +56,8 @@ class TestDateFormat: assert r[0, 1].strftime("%H:%M:%S") == "11:11:11" assert isinstance(r[0, 2], datetime.date) is True assert r[0, 2].strftime("%d/%m/%y %H:%M:%S") == "25/12/14 11:11:11" - assert isinstance(r[0, 3], datetime.timedelta) - assert r[0, 1].strftime("%H:%M:%S") == "3:30:20" + assert isinstance(r[0, 3], datetime.datetime) + assert r[0, 3].strftime("%D-%H:%M:%S") == "03/04/00-08:05:56" os.unlink(excel_filename)