@@ -43,6 +43,7 @@ PHP_VTIFUL_API zend_object *vtiful_xls_objects_new(zend_class_entry *ce)
43
43
44
44
intern -> format_ptr .format = NULL ;
45
45
intern -> write_ptr .workbook = NULL ;
46
+ intern -> row_options = NULL ;
46
47
47
48
intern -> formats_cache_ptr .maps = formats_cache_ht ;
48
49
@@ -187,16 +188,22 @@ ZEND_BEGIN_ARG_INFO_EX(xls_merge_cells_arginfo, 0, 0, 2)
187
188
ZEND_ARG_INFO (0 , format_handle )
188
189
ZEND_END_ARG_INFO ()
189
190
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 )
192
192
ZEND_ARG_INFO (0 , range )
193
193
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 )
194
198
ZEND_END_ARG_INFO ()
195
199
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 )
198
201
ZEND_ARG_INFO (0 , range )
199
202
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 )
200
207
ZEND_END_ARG_INFO ()
201
208
202
209
ZEND_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)
221
228
ZEND_ARG_INFO (0 , format_handle )
222
229
ZEND_END_ARG_INFO ()
223
230
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
+
224
237
ZEND_BEGIN_ARG_INFO_EX (xls_open_file_arginfo , 0 , 0 , 1 )
225
238
ZEND_ARG_INFO (0 , zs_file_name )
226
239
ZEND_END_ARG_INFO ()
@@ -655,6 +668,11 @@ PHP_METHOD(vtiful_xls, data)
655
668
continue ;
656
669
}
657
670
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
+
658
676
column_index = 0 ;
659
677
660
678
ZEND_HASH_FOREACH_KEY_VAL_IND (Z_ARRVAL_P (data_r_value ), index , key , data ) {
@@ -1020,64 +1038,92 @@ PHP_METHOD(vtiful_xls, mergeCells)
1020
1038
}
1021
1039
/* }}} */
1022
1040
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 )
1024
1042
*/
1025
1043
PHP_METHOD (vtiful_xls , setColumn )
1026
1044
{
1027
1045
zval * format_handle = NULL ;
1028
1046
zend_string * range = NULL ;
1029
-
1047
+ zend_long level = 0 ;
1048
+ zend_bool collapsed = 0 ;
1049
+ zend_bool hidden = 0 ;
1030
1050
double width = 0 ;
1031
- int argc = ZEND_NUM_ARGS ();
1032
1051
1033
- ZEND_PARSE_PARAMETERS_START (2 , 3 )
1052
+ ZEND_PARSE_PARAMETERS_START (2 , 6 )
1034
1053
Z_PARAM_STR (range )
1035
1054
Z_PARAM_DOUBLE (width )
1036
1055
Z_PARAM_OPTIONAL
1037
1056
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 )
1038
1060
ZEND_PARSE_PARAMETERS_END ();
1039
1061
1040
1062
ZVAL_COPY (return_value , getThis ());
1041
1063
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
+
1042
1069
xls_object * obj = Z_XLS_P (getThis ());
1043
1070
1044
1071
WORKBOOK_NOT_INITIALIZED (obj );
1045
1072
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 );
1048
1080
} else {
1049
- set_column (range , width , & obj -> write_ptr , NULL );
1081
+ set_column (range , width , & obj -> write_ptr , NULL , options );
1050
1082
}
1051
1083
}
1052
1084
/* }}} */
1053
1085
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 )
1055
1087
*/
1056
1088
PHP_METHOD (vtiful_xls , setRow )
1057
1089
{
1058
1090
zval * format_handle = NULL ;
1059
1091
zend_string * range = NULL ;
1060
-
1092
+ zend_long level = 0 ;
1093
+ zend_bool collapsed = 0 ;
1094
+ zend_bool hidden = 0 ;
1061
1095
double height = 0 ;
1062
- int argc = ZEND_NUM_ARGS ();
1063
1096
1064
- ZEND_PARSE_PARAMETERS_START (2 , 3 )
1097
+ ZEND_PARSE_PARAMETERS_START (2 , 6 )
1065
1098
Z_PARAM_STR (range )
1066
1099
Z_PARAM_DOUBLE (height )
1067
1100
Z_PARAM_OPTIONAL
1068
1101
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 )
1069
1105
ZEND_PARSE_PARAMETERS_END ();
1070
1106
1071
1107
ZVAL_COPY (return_value , getThis ());
1072
1108
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
+
1073
1114
xls_object * obj = Z_XLS_P (getThis ());
1074
1115
1075
1116
WORKBOOK_NOT_INITIALIZED (obj );
1076
1117
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 );
1079
1125
} else {
1080
- set_row (range , height , & obj -> write_ptr , NULL );
1126
+ set_row (range , height , & obj -> write_ptr , NULL , options );
1081
1127
}
1082
1128
}
1083
1129
/* }}} */
@@ -1140,6 +1186,39 @@ PHP_METHOD(vtiful_xls, defaultFormat)
1140
1186
}
1141
1187
/* }}} */
1142
1188
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
+
1143
1222
/** {{{ \Vtiful\Kernel\Excel::freezePanes(int $row, int $column)
1144
1223
*/
1145
1224
PHP_METHOD (vtiful_xls , freezePanes )
@@ -1697,34 +1776,36 @@ PHP_METHOD(vtiful_xls, nextCellCallback)
1697
1776
/** {{{ xls_methods
1698
1777
*/
1699
1778
zend_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
+
1728
1809
PHP_ME (vtiful_xls , freezePanes , xls_freeze_panes_arginfo , ZEND_ACC_PUBLIC )
1729
1810
1730
1811
PHP_ME (vtiful_xls , protection , xls_protection_arginfo , ZEND_ACC_PUBLIC )
0 commit comments