Skip to content

Commit

Permalink
Merge pull request #215 from viest/dev
Browse files Browse the repository at this point in the history
Feat: mergeCells and insertFormula support format
  • Loading branch information
viest committed Dec 19, 2019
2 parents fdc8709 + bf48d7f commit b9b9c02
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 7 deletions.
2 changes: 1 addition & 1 deletion include/xlswriter.h
Original file line number Diff line number Diff line change
Expand Up @@ -177,9 +177,9 @@ void auto_filter(zend_string *range, xls_resource_write_t *res);
void format_copy(lxw_format *new_format, lxw_format *other_format);
void xls_file_path(zend_string *file_name, zval *dir_path, zval *file_path);
void freeze_panes(xls_resource_write_t *res, zend_long row, zend_long column);
void merge_cells(zend_string *range, zend_string *value, xls_resource_write_t *res);
void set_row(zend_string *range, double height, xls_resource_write_t *res, lxw_format *format);
void set_column(zend_string *range, double width, xls_resource_write_t *res, lxw_format *format);
void merge_cells(zend_string *range, zend_string *value, xls_resource_write_t *res, lxw_format *format);
void url_writer(zend_long row, zend_long columns, xls_resource_write_t *res, zend_string *url, lxw_format *format);
void chart_writer(zend_long row, zend_long columns, xls_resource_chart_t *chart_resource, xls_resource_write_t *res);
void worksheet_set_rows(lxw_row_t start, lxw_row_t end, double height, xls_resource_write_t *res, lxw_format *format);
Expand Down
32 changes: 28 additions & 4 deletions kernel/excel.c
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,7 @@ ZEND_BEGIN_ARG_INFO_EX(xls_insert_formula_arginfo, 0, 0, 3)
ZEND_ARG_INFO(0, row)
ZEND_ARG_INFO(0, column)
ZEND_ARG_INFO(0, formula)
ZEND_ARG_INFO(0, format_handle)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(xls_auto_filter_arginfo, 0, 0, 1)
Expand All @@ -146,6 +147,7 @@ ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(xls_merge_cells_arginfo, 0, 0, 2)
ZEND_ARG_INFO(0, range)
ZEND_ARG_INFO(0, data)
ZEND_ARG_INFO(0, format_handle)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(xls_set_column_arginfo, 0, 0, 3)
Expand Down Expand Up @@ -625,13 +627,18 @@ PHP_METHOD(vtiful_xls, insertImage)
*/
PHP_METHOD(vtiful_xls, insertFormula)
{
zval *format_handle = NULL;
zend_string *formula = NULL;
zend_long row = 0, column = 0;

ZEND_PARSE_PARAMETERS_START(3, 3)
int argc = ZEND_NUM_ARGS();

ZEND_PARSE_PARAMETERS_START(3, 4)
Z_PARAM_LONG(row)
Z_PARAM_LONG(column)
Z_PARAM_STR(formula)
Z_PARAM_OPTIONAL
Z_PARAM_RESOURCE(format_handle)
ZEND_PARSE_PARAMETERS_END();

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

WORKBOOK_NOT_INITIALIZED(obj);

formula_writer(formula, row, column, &obj->write_ptr, obj->format_ptr.format);
if (argc == 3) {
formula_writer(formula, row, column, &obj->write_ptr, obj->format_ptr.format);
}

if (argc == 4) {
formula_writer(formula, row, column, &obj->write_ptr, zval_get_format(format_handle));
}
}
/* }}} */

Expand Down Expand Up @@ -668,11 +681,16 @@ PHP_METHOD(vtiful_xls, autoFilter)
*/
PHP_METHOD(vtiful_xls, mergeCells)
{
zval *format_handle = NULL;
zend_string *range = NULL, *data = NULL;

ZEND_PARSE_PARAMETERS_START(2, 2)
int argc = ZEND_NUM_ARGS();

ZEND_PARSE_PARAMETERS_START(2, 3)
Z_PARAM_STR(range)
Z_PARAM_STR(data)
Z_PARAM_OPTIONAL
Z_PARAM_RESOURCE(format_handle)
ZEND_PARSE_PARAMETERS_END();

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

WORKBOOK_NOT_INITIALIZED(obj);

merge_cells(range, data, &obj->write_ptr);
if (argc == 3) {
merge_cells(range, data, &obj->write_ptr, obj->format_ptr.format);
}

if (argc == 4) {
merge_cells(range, data, &obj->write_ptr, zval_get_format(format_handle));
}
}
/* }}} */

Expand Down
4 changes: 2 additions & 2 deletions kernel/write.c
Original file line number Diff line number Diff line change
Expand Up @@ -199,9 +199,9 @@ void auto_filter(zend_string *range, xls_resource_write_t *res)
/*
* Merge cells.
*/
void merge_cells(zend_string *range, zend_string *value, xls_resource_write_t *res)
void merge_cells(zend_string *range, zend_string *value, xls_resource_write_t *res, lxw_format *format)
{
worksheet_merge_range(res->worksheet, RANGE(ZSTR_VAL(range)), ZSTR_VAL(value), NULL);
worksheet_merge_range(res->worksheet, RANGE(ZSTR_VAL(range)), ZSTR_VAL(value), format);
}

/*
Expand Down

0 comments on commit b9b9c02

Please sign in to comment.