@@ -43,6 +43,7 @@ PHP_VTIFUL_API zend_object *vtiful_xls_objects_new(zend_class_entry *ce)
4343
4444 intern -> format_ptr .format = NULL ;
4545 intern -> write_ptr .workbook = NULL ;
46+ intern -> row_options = NULL ;
4647
4748 intern -> formats_cache_ptr .maps = formats_cache_ht ;
4849
@@ -187,16 +188,22 @@ ZEND_BEGIN_ARG_INFO_EX(xls_merge_cells_arginfo, 0, 0, 2)
187188 ZEND_ARG_INFO (0 , format_handle )
188189ZEND_END_ARG_INFO ()
189190
190- ZEND_BEGIN_ARG_INFO_EX (xls_set_column_arginfo , 0 , 0 , 3 )
191- ZEND_ARG_INFO (0 , format_handle )
191+ ZEND_BEGIN_ARG_INFO_EX (xls_set_column_arginfo , 0 , 0 , 2 )
192192 ZEND_ARG_INFO (0 , range )
193193 ZEND_ARG_INFO (0 , width )
194+ ZEND_ARG_INFO (0 , format_handle )
195+ ZEND_ARG_INFO (0 , level )
196+ ZEND_ARG_INFO (0 , collapsed )
197+ ZEND_ARG_INFO (0 , hidden )
194198ZEND_END_ARG_INFO ()
195199
196- ZEND_BEGIN_ARG_INFO_EX (xls_set_row_arginfo , 0 , 0 , 3 )
197- ZEND_ARG_INFO (0 , format_handle )
200+ ZEND_BEGIN_ARG_INFO_EX (xls_set_row_arginfo , 0 , 0 , 2 )
198201 ZEND_ARG_INFO (0 , range )
199202 ZEND_ARG_INFO (0 , height )
203+ ZEND_ARG_INFO (0 , format_handle )
204+ ZEND_ARG_INFO (0 , level )
205+ ZEND_ARG_INFO (0 , collapsed )
206+ ZEND_ARG_INFO (0 , hidden )
200207ZEND_END_ARG_INFO ()
201208
202209ZEND_BEGIN_ARG_INFO_EX (xls_set_curr_line_arginfo , 0 , 0 , 1 )
@@ -221,6 +228,12 @@ ZEND_BEGIN_ARG_INFO_EX(xls_set_global_format, 0, 0, 1)
221228 ZEND_ARG_INFO (0 , format_handle )
222229ZEND_END_ARG_INFO ()
223230
231+ ZEND_BEGIN_ARG_INFO_EX (xls_set_default_row_options_arginfo , 0 , 0 , 0 )
232+ ZEND_ARG_INFO (0 , level )
233+ ZEND_ARG_INFO (0 , collapsed )
234+ ZEND_ARG_INFO (0 , hidden )
235+ ZEND_END_ARG_INFO ()
236+
224237ZEND_BEGIN_ARG_INFO_EX (xls_open_file_arginfo , 0 , 0 , 1 )
225238 ZEND_ARG_INFO (0 , zs_file_name )
226239ZEND_END_ARG_INFO ()
@@ -655,6 +668,11 @@ PHP_METHOD(vtiful_xls, data)
655668 continue ;
656669 }
657670
671+ if (obj -> row_options != NULL ) {
672+ WORKSHEET_WRITER_EXCEPTION (
673+ worksheet_set_row_opt (obj -> write_ptr .worksheet , SHEET_CURRENT_LINE (obj ), LXW_DEF_ROW_HEIGHT , NULL , obj -> row_options ));
674+ }
675+
658676 column_index = 0 ;
659677
660678 ZEND_HASH_FOREACH_KEY_VAL_IND (Z_ARRVAL_P (data_r_value ), index , key , data ) {
@@ -1020,64 +1038,92 @@ PHP_METHOD(vtiful_xls, mergeCells)
10201038}
10211039/* }}} */
10221040
1023- /** {{{ \Vtiful\Kernel\Excel::setColumn(resource $format, string $range [, int $width] )
1041+ /** {{{ \Vtiful\Kernel\Excel::setColumn(string $range, float $width, resource $format = null, int $level = 0, bool $collapsed = false, bool $hidden = false )
10241042 */
10251043PHP_METHOD (vtiful_xls , setColumn )
10261044{
10271045 zval * format_handle = NULL ;
10281046 zend_string * range = NULL ;
1029-
1047+ zend_long level = 0 ;
1048+ zend_bool collapsed = 0 ;
1049+ zend_bool hidden = 0 ;
10301050 double width = 0 ;
1031- int argc = ZEND_NUM_ARGS ();
10321051
1033- ZEND_PARSE_PARAMETERS_START (2 , 3 )
1052+ ZEND_PARSE_PARAMETERS_START (2 , 6 )
10341053 Z_PARAM_STR (range )
10351054 Z_PARAM_DOUBLE (width )
10361055 Z_PARAM_OPTIONAL
10371056 Z_PARAM_RESOURCE_OR_NULL (format_handle )
1057+ Z_PARAM_LONG_OR_NULL (level , _dummy )
1058+ Z_PARAM_BOOL_OR_NULL (collapsed , _dummy )
1059+ Z_PARAM_BOOL_OR_NULL (hidden , _dummy )
10381060 ZEND_PARSE_PARAMETERS_END ();
10391061
10401062 ZVAL_COPY (return_value , getThis ());
10411063
1064+ if (level < 0 || level > 7 ) {
1065+ LXW_WARN_FORMAT1 ("outline level must be in 0..7 range, '%d' given." , level );
1066+ level = 0 ;
1067+ }
1068+
10421069 xls_object * obj = Z_XLS_P (getThis ());
10431070
10441071 WORKBOOK_NOT_INITIALIZED (obj );
10451072
1046- if (argc == 3 && format_handle != NULL) {
1047- set_column (range , width , & obj -> write_ptr , zval_get_format (format_handle ));
1073+ lxw_row_col_options * options = default_row_col_options ();
1074+ options -> level = level ;
1075+ options -> collapsed = collapsed ;
1076+ options -> hidden = hidden ;
1077+
1078+ if (format_handle != NULL ) {
1079+ set_column (range , width , & obj -> write_ptr , zval_get_format (format_handle ), options );
10481080 } else {
1049- set_column (range , width , & obj -> write_ptr , NULL );
1081+ set_column (range , width , & obj -> write_ptr , NULL , options );
10501082 }
10511083}
10521084/* }}} */
10531085
1054- /** {{{ \Vtiful\Kernel\Excel::setRow(resource $format, string $range [, int $heitght] )
1086+ /** {{{ \Vtiful\Kernel\Excel::setRow(string $range, float $height, resource $format = null, int $level = 0, bool $collapsed = false, bool $hidden = false )
10551087 */
10561088PHP_METHOD (vtiful_xls , setRow )
10571089{
10581090 zval * format_handle = NULL ;
10591091 zend_string * range = NULL ;
1060-
1092+ zend_long level = 0 ;
1093+ zend_bool collapsed = 0 ;
1094+ zend_bool hidden = 0 ;
10611095 double height = 0 ;
1062- int argc = ZEND_NUM_ARGS ();
10631096
1064- ZEND_PARSE_PARAMETERS_START (2 , 3 )
1097+ ZEND_PARSE_PARAMETERS_START (2 , 6 )
10651098 Z_PARAM_STR (range )
10661099 Z_PARAM_DOUBLE (height )
10671100 Z_PARAM_OPTIONAL
10681101 Z_PARAM_RESOURCE_OR_NULL (format_handle )
1102+ Z_PARAM_LONG_OR_NULL (level , _dummy )
1103+ Z_PARAM_BOOL_OR_NULL (collapsed , _dummy )
1104+ Z_PARAM_BOOL_OR_NULL (hidden , _dummy )
10691105 ZEND_PARSE_PARAMETERS_END ();
10701106
10711107 ZVAL_COPY (return_value , getThis ());
10721108
1109+ if (level < 0 || level > 7 ) {
1110+ LXW_WARN_FORMAT1 ("outline level must be in 0..7 range, '%d' given." , level );
1111+ level = 0 ;
1112+ }
1113+
10731114 xls_object * obj = Z_XLS_P (getThis ());
10741115
10751116 WORKBOOK_NOT_INITIALIZED (obj );
10761117
1077- if (argc == 3 && format_handle != NULL) {
1078- set_row (range , height , & obj -> write_ptr , zval_get_format (format_handle ));
1118+ lxw_row_col_options * options = default_row_col_options ();
1119+ options -> level = level ;
1120+ options -> collapsed = collapsed ;
1121+ options -> hidden = hidden ;
1122+
1123+ if (format_handle != NULL ) {
1124+ set_row (range , height , & obj -> write_ptr , zval_get_format (format_handle ), options );
10791125 } else {
1080- set_row (range , height , & obj -> write_ptr , NULL );
1126+ set_row (range , height , & obj -> write_ptr , NULL , options );
10811127 }
10821128}
10831129/* }}} */
@@ -1140,6 +1186,39 @@ PHP_METHOD(vtiful_xls, defaultFormat)
11401186}
11411187/* }}} */
11421188
1189+ /** {{{ \Vtiful\Kernel\Excel::defaultRowOptions(int $level = 0, bool $collapsed = false, bool $hidden = false)
1190+ */
1191+ PHP_METHOD (vtiful_xls , defaultRowOptions )
1192+ {
1193+ zend_long level = 0 ;
1194+ zend_bool collapsed = 0 ;
1195+ zend_bool hidden = 0 ;
1196+
1197+ ZEND_PARSE_PARAMETERS_START (0 , 3 )
1198+ Z_PARAM_OPTIONAL
1199+ Z_PARAM_LONG_OR_NULL (level , _dummy )
1200+ Z_PARAM_BOOL_OR_NULL (collapsed , _dummy )
1201+ Z_PARAM_BOOL_OR_NULL (hidden , _dummy )
1202+ ZEND_PARSE_PARAMETERS_END ();
1203+
1204+ ZVAL_COPY (return_value , getThis ());
1205+
1206+ if (level < 0 || level > 7 ) {
1207+ LXW_WARN_FORMAT1 ("outline level must be in 0..7 range, '%d' given." , level );
1208+ level = 0 ;
1209+ }
1210+
1211+ xls_object * obj = Z_XLS_P (getThis ());
1212+
1213+ if (obj -> row_options == NULL ) {
1214+ obj -> row_options = default_row_col_options ();
1215+ }
1216+ obj -> row_options -> level = level ;
1217+ obj -> row_options -> collapsed = collapsed ;
1218+ obj -> row_options -> hidden = hidden ;
1219+ }
1220+ /* }}} */
1221+
11431222/** {{{ \Vtiful\Kernel\Excel::freezePanes(int $row, int $column)
11441223 */
11451224PHP_METHOD (vtiful_xls , freezePanes )
@@ -1697,34 +1776,36 @@ PHP_METHOD(vtiful_xls, nextCellCallback)
16971776/** {{{ xls_methods
16981777*/
16991778zend_function_entry xls_methods [] = {
1700- PHP_ME (vtiful_xls , __construct , xls_construct_arginfo , ZEND_ACC_PUBLIC )
1701- PHP_ME (vtiful_xls , close , xls_close_arginfo , ZEND_ACC_PUBLIC )
1702- PHP_ME (vtiful_xls , fileName , xls_file_name_arginfo , ZEND_ACC_PUBLIC )
1703- PHP_ME (vtiful_xls , addSheet , xls_file_add_sheet , ZEND_ACC_PUBLIC )
1704- PHP_ME (vtiful_xls , existSheet , xls_file_exist_sheet , ZEND_ACC_PUBLIC )
1705- PHP_ME (vtiful_xls , checkoutSheet , xls_file_checkout_sheet , ZEND_ACC_PUBLIC )
1706- PHP_ME (vtiful_xls , activateSheet , xls_file_activate_sheet , ZEND_ACC_PUBLIC )
1707- PHP_ME (vtiful_xls , constMemory , xls_const_memory_arginfo , ZEND_ACC_PUBLIC )
1708- PHP_ME (vtiful_xls , header , xls_header_arginfo , ZEND_ACC_PUBLIC )
1709- PHP_ME (vtiful_xls , data , xls_data_arginfo , ZEND_ACC_PUBLIC )
1710- PHP_ME (vtiful_xls , output , xls_output_arginfo , ZEND_ACC_PUBLIC )
1711- PHP_ME (vtiful_xls , getHandle , xls_get_handle_arginfo , ZEND_ACC_PUBLIC )
1712- PHP_ME (vtiful_xls , autoFilter , xls_auto_filter_arginfo , ZEND_ACC_PUBLIC )
1713- PHP_ME (vtiful_xls , insertText , xls_insert_text_arginfo , ZEND_ACC_PUBLIC )
1714- PHP_ME (vtiful_xls , insertRichText , xls_insert_rtext_arginfo , ZEND_ACC_PUBLIC )
1715- PHP_ME (vtiful_xls , insertDate , xls_insert_date_arginfo , ZEND_ACC_PUBLIC )
1716- PHP_ME (vtiful_xls , insertChart , xls_insert_chart_arginfo , ZEND_ACC_PUBLIC )
1717- PHP_ME (vtiful_xls , insertUrl , xls_insert_url_arginfo , ZEND_ACC_PUBLIC )
1718- PHP_ME (vtiful_xls , insertImage , xls_insert_image_arginfo , ZEND_ACC_PUBLIC )
1719- PHP_ME (vtiful_xls , insertFormula , xls_insert_formula_arginfo , ZEND_ACC_PUBLIC )
1720- PHP_ME (vtiful_xls , insertComment , xls_insert_comment_arginfo , ZEND_ACC_PUBLIC )
1721- PHP_ME (vtiful_xls , showComment , xls_show_comment_arginfo , ZEND_ACC_PUBLIC )
1722- PHP_ME (vtiful_xls , mergeCells , xls_merge_cells_arginfo , ZEND_ACC_PUBLIC )
1723- PHP_ME (vtiful_xls , setColumn , xls_set_column_arginfo , ZEND_ACC_PUBLIC )
1724- PHP_ME (vtiful_xls , setRow , xls_set_row_arginfo , ZEND_ACC_PUBLIC )
1725- PHP_ME (vtiful_xls , getCurrentLine , xls_get_curr_line_arginfo , ZEND_ACC_PUBLIC )
1726- PHP_ME (vtiful_xls , setCurrentLine , xls_set_curr_line_arginfo , ZEND_ACC_PUBLIC )
1727- PHP_ME (vtiful_xls , defaultFormat , xls_set_global_format , ZEND_ACC_PUBLIC )
1779+ PHP_ME (vtiful_xls , __construct , xls_construct_arginfo , ZEND_ACC_PUBLIC )
1780+ PHP_ME (vtiful_xls , close , xls_close_arginfo , ZEND_ACC_PUBLIC )
1781+ PHP_ME (vtiful_xls , fileName , xls_file_name_arginfo , ZEND_ACC_PUBLIC )
1782+ PHP_ME (vtiful_xls , addSheet , xls_file_add_sheet , ZEND_ACC_PUBLIC )
1783+ PHP_ME (vtiful_xls , existSheet , xls_file_exist_sheet , ZEND_ACC_PUBLIC )
1784+ PHP_ME (vtiful_xls , checkoutSheet , xls_file_checkout_sheet , ZEND_ACC_PUBLIC )
1785+ PHP_ME (vtiful_xls , activateSheet , xls_file_activate_sheet , ZEND_ACC_PUBLIC )
1786+ PHP_ME (vtiful_xls , constMemory , xls_const_memory_arginfo , ZEND_ACC_PUBLIC )
1787+ PHP_ME (vtiful_xls , header , xls_header_arginfo , ZEND_ACC_PUBLIC )
1788+ PHP_ME (vtiful_xls , data , xls_data_arginfo , ZEND_ACC_PUBLIC )
1789+ PHP_ME (vtiful_xls , output , xls_output_arginfo , ZEND_ACC_PUBLIC )
1790+ PHP_ME (vtiful_xls , getHandle , xls_get_handle_arginfo , ZEND_ACC_PUBLIC )
1791+ PHP_ME (vtiful_xls , autoFilter , xls_auto_filter_arginfo , ZEND_ACC_PUBLIC )
1792+ PHP_ME (vtiful_xls , insertText , xls_insert_text_arginfo , ZEND_ACC_PUBLIC )
1793+ PHP_ME (vtiful_xls , insertRichText , xls_insert_rtext_arginfo , ZEND_ACC_PUBLIC )
1794+ PHP_ME (vtiful_xls , insertDate , xls_insert_date_arginfo , ZEND_ACC_PUBLIC )
1795+ PHP_ME (vtiful_xls , insertChart , xls_insert_chart_arginfo , ZEND_ACC_PUBLIC )
1796+ PHP_ME (vtiful_xls , insertUrl , xls_insert_url_arginfo , ZEND_ACC_PUBLIC )
1797+ PHP_ME (vtiful_xls , insertImage , xls_insert_image_arginfo , ZEND_ACC_PUBLIC )
1798+ PHP_ME (vtiful_xls , insertFormula , xls_insert_formula_arginfo , ZEND_ACC_PUBLIC )
1799+ PHP_ME (vtiful_xls , insertComment , xls_insert_comment_arginfo , ZEND_ACC_PUBLIC )
1800+ PHP_ME (vtiful_xls , showComment , xls_show_comment_arginfo , ZEND_ACC_PUBLIC )
1801+ PHP_ME (vtiful_xls , mergeCells , xls_merge_cells_arginfo , ZEND_ACC_PUBLIC )
1802+ PHP_ME (vtiful_xls , setColumn , xls_set_column_arginfo , ZEND_ACC_PUBLIC )
1803+ PHP_ME (vtiful_xls , setRow , xls_set_row_arginfo , ZEND_ACC_PUBLIC )
1804+ PHP_ME (vtiful_xls , getCurrentLine , xls_get_curr_line_arginfo , ZEND_ACC_PUBLIC )
1805+ PHP_ME (vtiful_xls , setCurrentLine , xls_set_curr_line_arginfo , ZEND_ACC_PUBLIC )
1806+ PHP_ME (vtiful_xls , defaultFormat , xls_set_global_format , ZEND_ACC_PUBLIC )
1807+ PHP_ME (vtiful_xls , defaultRowOptions , xls_set_default_row_options_arginfo , ZEND_ACC_PUBLIC )
1808+
17281809 PHP_ME (vtiful_xls , freezePanes , xls_freeze_panes_arginfo , ZEND_ACC_PUBLIC )
17291810
17301811 PHP_ME (vtiful_xls , protection , xls_protection_arginfo , ZEND_ACC_PUBLIC )
0 commit comments