From ff33747143d8192d0593679fd0d3bf34d6fa293f Mon Sep 17 00:00:00 2001 From: vidy Date: Tue, 27 Aug 2024 16:13:54 +0800 Subject: [PATCH 1/2] Don't create a new format handle, use it directly instead --- kernel/write.c | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/kernel/write.c b/kernel/write.c index 6c77f5f..9d4c35d 100644 --- a/kernel/write.c +++ b/kernel/write.c @@ -49,12 +49,9 @@ void type_writer(zval *value, zend_long row, zend_long columns, xls_resource_wri } if(format != NULL && format_handle != NULL) { - value_format = workbook_add_format(res->workbook); - - format_copy(value_format, format_handle); - format_set_num_format(value_format, ZSTR_VAL(format)); + format_set_num_format(format_handle, ZSTR_VAL(format)); - WORKSHEET_WRITER_EXCEPTION(worksheet_write_number(res->worksheet, lxw_row, lxw_col, (double)zval_get_long(value), value_format)); + WORKSHEET_WRITER_EXCEPTION(worksheet_write_number(res->worksheet, lxw_row, lxw_col, (double)zval_get_long(value), format_handle)); return; } @@ -76,12 +73,9 @@ void type_writer(zval *value, zend_long row, zend_long columns, xls_resource_wri } if(format != NULL && format_handle != NULL) { - value_format = workbook_add_format(res->workbook); + format_set_num_format(format_handle, ZSTR_VAL(format)); - format_copy(value_format, format_handle); - format_set_num_format(value_format, ZSTR_VAL(format)); - - WORKSHEET_WRITER_EXCEPTION(worksheet_write_number(res->worksheet, lxw_row, lxw_col, zval_get_double(value), value_format)); + WORKSHEET_WRITER_EXCEPTION(worksheet_write_number(res->worksheet, lxw_row, lxw_col, zval_get_double(value), format_handle)); return; } @@ -255,14 +249,11 @@ void chart_writer(zend_long row, zend_long columns, xls_resource_chart_t *chart_ */ void datetime_writer(lxw_datetime *datetime, zend_long row, zend_long columns, zend_string *format, xls_resource_write_t *res, lxw_format *format_handle) { - lxw_format *value_format = workbook_add_format(res->workbook); - if (format_handle != NULL) { - format_copy(value_format, format_handle); + format_set_num_format(format_handle, ZSTR_VAL(format)); } - format_set_num_format(value_format, ZSTR_VAL(format)); - worksheet_write_datetime(res->worksheet, (lxw_row_t)row, (lxw_col_t)columns, datetime, value_format); + worksheet_write_datetime(res->worksheet, (lxw_row_t)row, (lxw_col_t)columns, datetime, format_handle); } /* @@ -356,7 +347,6 @@ void set_row(zend_string *range, double height, xls_resource_write_t *res, lxw_f void validation(xls_resource_write_t *res, zend_string *range, lxw_data_validation *validation) { char *rangeStr = ZSTR_VAL(range); - if (strchr(rangeStr, ':')) { worksheet_data_validation_range(res->worksheet, RANGE(rangeStr), validation); } else { From a7280e14f6aa25937f2a05953271b5f1db8a0518 Mon Sep 17 00:00:00 2001 From: vidy Date: Tue, 27 Aug 2024 17:27:50 +0800 Subject: [PATCH 2/2] Keep original behavior --- kernel/write.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/kernel/write.c b/kernel/write.c index 9d4c35d..d44b791 100644 --- a/kernel/write.c +++ b/kernel/write.c @@ -249,11 +249,13 @@ void chart_writer(zend_long row, zend_long columns, xls_resource_chart_t *chart_ */ void datetime_writer(lxw_datetime *datetime, zend_long row, zend_long columns, zend_string *format, xls_resource_write_t *res, lxw_format *format_handle) { - if (format_handle != NULL) { - format_set_num_format(format_handle, ZSTR_VAL(format)); + lxw_format *value_format = format_handle; + if (format_handle == NULL) { + value_format = workbook_add_format(res->workbook); } - - worksheet_write_datetime(res->worksheet, (lxw_row_t)row, (lxw_col_t)columns, datetime, format_handle); + + format_set_num_format(value_format, ZSTR_VAL(format)); + worksheet_write_datetime(res->worksheet, (lxw_row_t)row, (lxw_col_t)columns, datetime, value_format); } /* @@ -347,6 +349,7 @@ void set_row(zend_string *range, double height, xls_resource_write_t *res, lxw_f void validation(xls_resource_write_t *res, zend_string *range, lxw_data_validation *validation) { char *rangeStr = ZSTR_VAL(range); + if (strchr(rangeStr, ':')) { worksheet_data_validation_range(res->worksheet, RANGE(rangeStr), validation); } else {