@@ -90,6 +90,7 @@ ZEND_END_ARG_INFO()
9090
9191ZEND_BEGIN_ARG_INFO_EX (xls_header_arginfo , 0 , 0 , 1 )
9292 ZEND_ARG_INFO (0 , header )
93+ ZEND_ARG_INFO (0 , format_handle )
9394ZEND_END_ARG_INFO ()
9495
9596ZEND_BEGIN_ARG_INFO_EX (xls_data_arginfo , 0 , 0 , 1 )
@@ -402,10 +403,13 @@ PHP_METHOD(vtiful_xls, constMemory)
402403PHP_METHOD (vtiful_xls , header )
403404{
404405 zend_long header_l_key ;
405- zval * header = NULL , * header_value = NULL ;
406+ lxw_format * format_handle = NULL ;
407+ zval * header = NULL , * header_value = NULL , * zv_format_handle = NULL ;;
406408
407- ZEND_PARSE_PARAMETERS_START (1 , 1 )
409+ ZEND_PARSE_PARAMETERS_START (1 , 2 )
408410 Z_PARAM_ARRAY (header )
411+ Z_PARAM_OPTIONAL
412+ Z_PARAM_RESOURCE (zv_format_handle )
409413 ZEND_PARSE_PARAMETERS_END ();
410414
411415 ZVAL_COPY (return_value , getThis ());
@@ -414,8 +418,14 @@ PHP_METHOD(vtiful_xls, header)
414418
415419 WORKBOOK_NOT_INITIALIZED (obj );
416420
421+ if (zv_format_handle == NULL ) {
422+ format_handle = obj -> format_ptr .format ;
423+ } else {
424+ format_handle = zval_get_format (zv_format_handle );
425+ }
426+
417427 ZEND_HASH_FOREACH_NUM_KEY_VAL (Z_ARRVAL_P (header ), header_l_key , header_value )
418- type_writer (header_value , 0 , header_l_key , & obj -> write_ptr , NULL , obj -> format_ptr . format );
428+ type_writer (header_value , 0 , header_l_key , & obj -> write_ptr , NULL , format_handle );
419429 ZEND_HASH_FOREACH_END ();
420430
421431 SHEET_LINE_ADD (obj )
@@ -556,7 +566,11 @@ PHP_METHOD(vtiful_xls, insertDate)
556566 type_writer (& _zv_double_time , row , column , & obj -> write_ptr , format , obj -> format_ptr .format );
557567 }
558568
559- zend_string_release (format );
569+ // Release default format
570+ if (ZEND_NUM_ARGS () == 3 ) {
571+ zend_string_release (format );
572+ }
573+
560574 zval_ptr_dtor (& _zv_double_time );
561575}
562576/* }}} */
0 commit comments