Skip to content

Commit b9b9c02

Browse files
authored
Merge pull request #215 from viest/dev
Feat: mergeCells and insertFormula support format
2 parents fdc8709 + bf48d7f commit b9b9c02

File tree

3 files changed

+31
-7
lines changed

3 files changed

+31
-7
lines changed

include/xlswriter.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,9 +177,9 @@ void auto_filter(zend_string *range, xls_resource_write_t *res);
177177
void format_copy(lxw_format *new_format, lxw_format *other_format);
178178
void xls_file_path(zend_string *file_name, zval *dir_path, zval *file_path);
179179
void freeze_panes(xls_resource_write_t *res, zend_long row, zend_long column);
180-
void merge_cells(zend_string *range, zend_string *value, xls_resource_write_t *res);
181180
void set_row(zend_string *range, double height, xls_resource_write_t *res, lxw_format *format);
182181
void set_column(zend_string *range, double width, xls_resource_write_t *res, lxw_format *format);
182+
void merge_cells(zend_string *range, zend_string *value, xls_resource_write_t *res, lxw_format *format);
183183
void url_writer(zend_long row, zend_long columns, xls_resource_write_t *res, zend_string *url, lxw_format *format);
184184
void chart_writer(zend_long row, zend_long columns, xls_resource_chart_t *chart_resource, xls_resource_write_t *res);
185185
void worksheet_set_rows(lxw_row_t start, lxw_row_t end, double height, xls_resource_write_t *res, lxw_format *format);

kernel/excel.c

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ ZEND_BEGIN_ARG_INFO_EX(xls_insert_formula_arginfo, 0, 0, 3)
137137
ZEND_ARG_INFO(0, row)
138138
ZEND_ARG_INFO(0, column)
139139
ZEND_ARG_INFO(0, formula)
140+
ZEND_ARG_INFO(0, format_handle)
140141
ZEND_END_ARG_INFO()
141142

142143
ZEND_BEGIN_ARG_INFO_EX(xls_auto_filter_arginfo, 0, 0, 1)
@@ -146,6 +147,7 @@ ZEND_END_ARG_INFO()
146147
ZEND_BEGIN_ARG_INFO_EX(xls_merge_cells_arginfo, 0, 0, 2)
147148
ZEND_ARG_INFO(0, range)
148149
ZEND_ARG_INFO(0, data)
150+
ZEND_ARG_INFO(0, format_handle)
149151
ZEND_END_ARG_INFO()
150152

151153
ZEND_BEGIN_ARG_INFO_EX(xls_set_column_arginfo, 0, 0, 3)
@@ -625,13 +627,18 @@ PHP_METHOD(vtiful_xls, insertImage)
625627
*/
626628
PHP_METHOD(vtiful_xls, insertFormula)
627629
{
630+
zval *format_handle = NULL;
628631
zend_string *formula = NULL;
629632
zend_long row = 0, column = 0;
630633

631-
ZEND_PARSE_PARAMETERS_START(3, 3)
634+
int argc = ZEND_NUM_ARGS();
635+
636+
ZEND_PARSE_PARAMETERS_START(3, 4)
632637
Z_PARAM_LONG(row)
633638
Z_PARAM_LONG(column)
634639
Z_PARAM_STR(formula)
640+
Z_PARAM_OPTIONAL
641+
Z_PARAM_RESOURCE(format_handle)
635642
ZEND_PARSE_PARAMETERS_END();
636643

637644
ZVAL_COPY(return_value, getThis());
@@ -640,7 +647,13 @@ PHP_METHOD(vtiful_xls, insertFormula)
640647

641648
WORKBOOK_NOT_INITIALIZED(obj);
642649

643-
formula_writer(formula, row, column, &obj->write_ptr, obj->format_ptr.format);
650+
if (argc == 3) {
651+
formula_writer(formula, row, column, &obj->write_ptr, obj->format_ptr.format);
652+
}
653+
654+
if (argc == 4) {
655+
formula_writer(formula, row, column, &obj->write_ptr, zval_get_format(format_handle));
656+
}
644657
}
645658
/* }}} */
646659

@@ -668,11 +681,16 @@ PHP_METHOD(vtiful_xls, autoFilter)
668681
*/
669682
PHP_METHOD(vtiful_xls, mergeCells)
670683
{
684+
zval *format_handle = NULL;
671685
zend_string *range = NULL, *data = NULL;
672686

673-
ZEND_PARSE_PARAMETERS_START(2, 2)
687+
int argc = ZEND_NUM_ARGS();
688+
689+
ZEND_PARSE_PARAMETERS_START(2, 3)
674690
Z_PARAM_STR(range)
675691
Z_PARAM_STR(data)
692+
Z_PARAM_OPTIONAL
693+
Z_PARAM_RESOURCE(format_handle)
676694
ZEND_PARSE_PARAMETERS_END();
677695

678696
ZVAL_COPY(return_value, getThis());
@@ -681,7 +699,13 @@ PHP_METHOD(vtiful_xls, mergeCells)
681699

682700
WORKBOOK_NOT_INITIALIZED(obj);
683701

684-
merge_cells(range, data, &obj->write_ptr);
702+
if (argc == 3) {
703+
merge_cells(range, data, &obj->write_ptr, obj->format_ptr.format);
704+
}
705+
706+
if (argc == 4) {
707+
merge_cells(range, data, &obj->write_ptr, zval_get_format(format_handle));
708+
}
685709
}
686710
/* }}} */
687711

kernel/write.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -199,9 +199,9 @@ void auto_filter(zend_string *range, xls_resource_write_t *res)
199199
/*
200200
* Merge cells.
201201
*/
202-
void merge_cells(zend_string *range, zend_string *value, xls_resource_write_t *res)
202+
void merge_cells(zend_string *range, zend_string *value, xls_resource_write_t *res, lxw_format *format)
203203
{
204-
worksheet_merge_range(res->worksheet, RANGE(ZSTR_VAL(range)), ZSTR_VAL(value), NULL);
204+
worksheet_merge_range(res->worksheet, RANGE(ZSTR_VAL(range)), ZSTR_VAL(value), format);
205205
}
206206

207207
/*

0 commit comments

Comments
 (0)