@@ -35,8 +35,9 @@ PHP_VTIFUL_API zend_object *vtiful_xls_objects_new(zend_class_entry *ce)
3535
3636 intern -> zo .handlers = & vtiful_xls_handlers ;
3737
38- intern -> read_ptr .file_t = NULL ;
39- intern -> read_ptr .sheet_t = NULL ;
38+ intern -> read_ptr .file_t = NULL ;
39+ intern -> read_ptr .sheet_t = NULL ;
40+ intern -> format_ptr .format = NULL ;
4041
4142 return & intern -> zo ;
4243}
@@ -55,6 +56,10 @@ static void vtiful_xls_objects_free(zend_object *object)
5556 xlsxioread_close (intern -> read_ptr .file_t );
5657#endif
5758
59+ if (intern -> format_ptr .format != NULL ) {
60+ intern -> format_ptr .format = NULL ;
61+ }
62+
5863 zend_object_std_dtor (& intern -> zo );
5964}
6065/* }}} */
@@ -155,6 +160,10 @@ ZEND_BEGIN_ARG_INFO_EX(xls_set_row_arginfo, 0, 0, 3)
155160 ZEND_ARG_INFO (0 , height )
156161ZEND_END_ARG_INFO ()
157162
163+ ZEND_BEGIN_ARG_INFO_EX (xls_set_global_format , 0 , 0 , 1 )
164+ ZEND_ARG_INFO (0 , format_handle )
165+ ZEND_END_ARG_INFO ()
166+
158167ZEND_BEGIN_ARG_INFO_EX (xls_open_file_arginfo , 0 , 0 , 1 )
159168 ZEND_ARG_INFO (0 , zs_file_name )
160169ZEND_END_ARG_INFO ()
@@ -377,7 +386,7 @@ PHP_METHOD(vtiful_xls, header)
377386 WORKBOOK_NOT_INITIALIZED (obj );
378387
379388 ZEND_HASH_FOREACH_NUM_KEY_VAL (Z_ARRVAL_P (header ), header_l_key , header_value )
380- type_writer (header_value , 0 , header_l_key , & obj -> write_ptr , NULL , NULL );
389+ type_writer (header_value , 0 , header_l_key , & obj -> write_ptr , NULL , obj -> format_ptr . format );
381390 zval_ptr_dtor (header_value );
382391 ZEND_HASH_FOREACH_END ();
383392
@@ -404,7 +413,7 @@ PHP_METHOD(vtiful_xls, data)
404413 ZEND_HASH_FOREACH_VAL (Z_ARRVAL_P (data ), data_r_value )
405414 if (Z_TYPE_P (data_r_value ) == IS_ARRAY ) {
406415 ZEND_HASH_FOREACH_BUCKET (Z_ARRVAL_P (data_r_value ), Bucket * bucket )
407- type_writer (& bucket -> val , SHEET_CURRENT_LINE (obj ), bucket -> h , & obj -> write_ptr , NULL , NULL );
416+ type_writer (& bucket -> val , SHEET_CURRENT_LINE (obj ), bucket -> h , & obj -> write_ptr , NULL , obj -> format_ptr . format );
408417 zval_ptr_dtor (& bucket -> val );
409418 ZEND_HASH_FOREACH_END ();
410419
@@ -438,6 +447,8 @@ PHP_METHOD(vtiful_xls, getHandle)
438447{
439448 xls_object * obj = Z_XLS_P (getThis ());
440449
450+ WORKBOOK_NOT_INITIALIZED (obj );
451+
441452 RETURN_RES (zend_register_resource (& obj -> write_ptr , le_xls_writer ));
442453}
443454/* }}} */
@@ -470,7 +481,7 @@ PHP_METHOD(vtiful_xls, insertText)
470481 if (format_handle ) {
471482 type_writer (data , row , column , & obj -> write_ptr , format , zval_get_format (format_handle ));
472483 } else {
473- type_writer (data , row , column , & obj -> write_ptr , format , NULL );
484+ type_writer (data , row , column , & obj -> write_ptr , format , obj -> format_ptr . format );
474485 }
475486}
476487/* }}} */
@@ -515,7 +526,7 @@ PHP_METHOD(vtiful_xls, insertDate)
515526 if (format_handle ) {
516527 type_writer (& _zv_double_time , row , column , & obj -> write_ptr , format , zval_get_format (format_handle ));
517528 } else {
518- type_writer (& _zv_double_time , row , column , & obj -> write_ptr , format , NULL );
529+ type_writer (& _zv_double_time , row , column , & obj -> write_ptr , format , obj -> format_ptr . format );
519530 }
520531
521532 zend_string_release (format );
@@ -575,7 +586,7 @@ PHP_METHOD(vtiful_xls, insertUrl)
575586 }
576587
577588 if (argc == 3 ) {
578- url_writer (row , column , & obj -> write_ptr , url , NULL );
589+ url_writer (row , column , & obj -> write_ptr , url , obj -> format_ptr . format );
579590 }
580591}
581592/* }}} */
@@ -626,7 +637,7 @@ PHP_METHOD(vtiful_xls, insertFormula)
626637
627638 WORKBOOK_NOT_INITIALIZED (obj );
628639
629- formula_writer (formula , row , column , & obj -> write_ptr );
640+ formula_writer (formula , row , column , & obj -> write_ptr , obj -> format_ptr . format );
630641}
631642/* }}} */
632643
@@ -737,6 +748,23 @@ PHP_METHOD(vtiful_xls, setRow)
737748}
738749/* }}} */
739750
751+ /** {{{ \Vtiful\Kernel\Excel::defaultFormat(resource $format)
752+ */
753+ PHP_METHOD (vtiful_xls , defaultFormat )
754+ {
755+ zval * format_handle = NULL ;
756+
757+ ZEND_PARSE_PARAMETERS_START (1 , 1 )
758+ Z_PARAM_RESOURCE (format_handle )
759+ ZEND_PARSE_PARAMETERS_END ();
760+
761+ ZVAL_COPY (return_value , getThis ());
762+
763+ xls_object * obj = Z_XLS_P (getThis ());
764+ obj -> format_ptr .format = zval_get_format (format_handle );
765+ }
766+ /* }}} */
767+
740768/** {{{ \Vtiful\Kernel\Excel::freezePanes(int $row, int $column)
741769 */
742770PHP_METHOD (vtiful_xls , freezePanes )
@@ -1056,6 +1084,7 @@ zend_function_entry xls_methods[] = {
10561084 PHP_ME (vtiful_xls , mergeCells , xls_merge_cells_arginfo , ZEND_ACC_PUBLIC )
10571085 PHP_ME (vtiful_xls , setColumn , xls_set_column_arginfo , ZEND_ACC_PUBLIC )
10581086 PHP_ME (vtiful_xls , setRow , xls_set_row_arginfo , ZEND_ACC_PUBLIC )
1087+ PHP_ME (vtiful_xls , defaultFormat , xls_set_global_format , ZEND_ACC_PUBLIC )
10591088 PHP_ME (vtiful_xls , freezePanes , xls_freeze_panes_arginfo , ZEND_ACC_PUBLIC )
10601089
10611090 PHP_ME (vtiful_xls , zoom , xls_sheet_zoom_arginfo , ZEND_ACC_PUBLIC )
0 commit comments