Skip to content

Commit 9c61db2

Browse files
authored
Merge pull request #395 from viest/dev
Feat: set current line and get
2 parents 207ad65 + 475a2ca commit 9c61db2

File tree

2 files changed

+94
-26
lines changed

2 files changed

+94
-26
lines changed

kernel/excel.c

Lines changed: 67 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,13 @@ ZEND_BEGIN_ARG_INFO_EX(xls_set_row_arginfo, 0, 0, 3)
186186
ZEND_ARG_INFO(0, height)
187187
ZEND_END_ARG_INFO()
188188

189+
ZEND_BEGIN_ARG_INFO_EX(xls_set_curr_line_arginfo, 0, 0, 1)
190+
ZEND_ARG_INFO(0, row)
191+
ZEND_END_ARG_INFO()
192+
193+
ZEND_BEGIN_ARG_INFO_EX(xls_get_curr_line_arginfo, 0, 0, 0)
194+
ZEND_END_ARG_INFO()
195+
189196
ZEND_BEGIN_ARG_INFO_EX(xls_set_paper_arginfo, 0, 0, 1)
190197
ZEND_ARG_INFO(0, paper)
191198
ZEND_END_ARG_INFO()
@@ -531,6 +538,38 @@ PHP_METHOD(vtiful_xls, constMemory)
531538
}
532539
/* }}} */
533540

541+
/** {{{ \Vtiful\Kernel\Excel::setCurrentLine(int $row)
542+
*/
543+
PHP_METHOD(vtiful_xls, setCurrentLine)
544+
{
545+
zend_long row = 0;
546+
547+
ZEND_PARSE_PARAMETERS_START(1, 1)
548+
Z_PARAM_LONG(row)
549+
ZEND_PARSE_PARAMETERS_END();
550+
551+
ZVAL_COPY(return_value, getThis());
552+
553+
xls_object *obj = Z_XLS_P(getThis());
554+
555+
WORKBOOK_NOT_INITIALIZED(obj);
556+
557+
if (row < SHEET_CURRENT_LINE(obj)) {
558+
zend_throw_exception(vtiful_exception_ce, "The row number is abnormal, the behavior will overwrite the previous data", 400);
559+
return;
560+
}
561+
562+
SHEET_LINE_SET(obj, row);
563+
}
564+
565+
/** {{{ \Vtiful\Kernel\Excel::getCurrentLine()
566+
*/
567+
PHP_METHOD(vtiful_xls, getCurrentLine)
568+
{
569+
xls_object *obj = Z_XLS_P(getThis());
570+
571+
RETURN_LONG(SHEET_CURRENT_LINE(obj));
572+
}
534573

535574
/** {{{ \Vtiful\Kernel\Excel::header(array $header)
536575
*/
@@ -1579,32 +1618,34 @@ PHP_METHOD(vtiful_xls, nextCellCallback)
15791618
/** {{{ xls_methods
15801619
*/
15811620
zend_function_entry xls_methods[] = {
1582-
PHP_ME(vtiful_xls, __construct, xls_construct_arginfo, ZEND_ACC_PUBLIC)
1583-
PHP_ME(vtiful_xls, close, xls_close_arginfo, ZEND_ACC_PUBLIC)
1584-
PHP_ME(vtiful_xls, fileName, xls_file_name_arginfo, ZEND_ACC_PUBLIC)
1585-
PHP_ME(vtiful_xls, addSheet, xls_file_add_sheet, ZEND_ACC_PUBLIC)
1586-
PHP_ME(vtiful_xls, existSheet, xls_file_exist_sheet, ZEND_ACC_PUBLIC)
1587-
PHP_ME(vtiful_xls, checkoutSheet, xls_file_checkout_sheet, ZEND_ACC_PUBLIC)
1588-
PHP_ME(vtiful_xls, activateSheet, xls_file_activate_sheet, ZEND_ACC_PUBLIC)
1589-
PHP_ME(vtiful_xls, constMemory, xls_const_memory_arginfo, ZEND_ACC_PUBLIC)
1590-
PHP_ME(vtiful_xls, header, xls_header_arginfo, ZEND_ACC_PUBLIC)
1591-
PHP_ME(vtiful_xls, data, xls_data_arginfo, ZEND_ACC_PUBLIC)
1592-
PHP_ME(vtiful_xls, output, xls_output_arginfo, ZEND_ACC_PUBLIC)
1593-
PHP_ME(vtiful_xls, getHandle, xls_get_handle_arginfo, ZEND_ACC_PUBLIC)
1594-
PHP_ME(vtiful_xls, autoFilter, xls_auto_filter_arginfo, ZEND_ACC_PUBLIC)
1595-
PHP_ME(vtiful_xls, insertText, xls_insert_text_arginfo, ZEND_ACC_PUBLIC)
1596-
PHP_ME(vtiful_xls, insertDate, xls_insert_date_arginfo, ZEND_ACC_PUBLIC)
1597-
PHP_ME(vtiful_xls, insertChart, xls_insert_chart_arginfo, ZEND_ACC_PUBLIC)
1598-
PHP_ME(vtiful_xls, insertUrl, xls_insert_url_arginfo, ZEND_ACC_PUBLIC)
1599-
PHP_ME(vtiful_xls, insertImage, xls_insert_image_arginfo, ZEND_ACC_PUBLIC)
1600-
PHP_ME(vtiful_xls, insertFormula, xls_insert_formula_arginfo, ZEND_ACC_PUBLIC)
1601-
PHP_ME(vtiful_xls, insertComment, xls_insert_comment_arginfo, ZEND_ACC_PUBLIC)
1602-
PHP_ME(vtiful_xls, showComment, xls_show_comment_arginfo, ZEND_ACC_PUBLIC)
1603-
PHP_ME(vtiful_xls, mergeCells, xls_merge_cells_arginfo, ZEND_ACC_PUBLIC)
1604-
PHP_ME(vtiful_xls, setColumn, xls_set_column_arginfo, ZEND_ACC_PUBLIC)
1605-
PHP_ME(vtiful_xls, setRow, xls_set_row_arginfo, ZEND_ACC_PUBLIC)
1606-
PHP_ME(vtiful_xls, defaultFormat, xls_set_global_format, ZEND_ACC_PUBLIC)
1607-
PHP_ME(vtiful_xls, freezePanes, xls_freeze_panes_arginfo, ZEND_ACC_PUBLIC)
1621+
PHP_ME(vtiful_xls, __construct, xls_construct_arginfo, ZEND_ACC_PUBLIC)
1622+
PHP_ME(vtiful_xls, close, xls_close_arginfo, ZEND_ACC_PUBLIC)
1623+
PHP_ME(vtiful_xls, fileName, xls_file_name_arginfo, ZEND_ACC_PUBLIC)
1624+
PHP_ME(vtiful_xls, addSheet, xls_file_add_sheet, ZEND_ACC_PUBLIC)
1625+
PHP_ME(vtiful_xls, existSheet, xls_file_exist_sheet, ZEND_ACC_PUBLIC)
1626+
PHP_ME(vtiful_xls, checkoutSheet, xls_file_checkout_sheet, ZEND_ACC_PUBLIC)
1627+
PHP_ME(vtiful_xls, activateSheet, xls_file_activate_sheet, ZEND_ACC_PUBLIC)
1628+
PHP_ME(vtiful_xls, constMemory, xls_const_memory_arginfo, ZEND_ACC_PUBLIC)
1629+
PHP_ME(vtiful_xls, header, xls_header_arginfo, ZEND_ACC_PUBLIC)
1630+
PHP_ME(vtiful_xls, data, xls_data_arginfo, ZEND_ACC_PUBLIC)
1631+
PHP_ME(vtiful_xls, output, xls_output_arginfo, ZEND_ACC_PUBLIC)
1632+
PHP_ME(vtiful_xls, getHandle, xls_get_handle_arginfo, ZEND_ACC_PUBLIC)
1633+
PHP_ME(vtiful_xls, autoFilter, xls_auto_filter_arginfo, ZEND_ACC_PUBLIC)
1634+
PHP_ME(vtiful_xls, insertText, xls_insert_text_arginfo, ZEND_ACC_PUBLIC)
1635+
PHP_ME(vtiful_xls, insertDate, xls_insert_date_arginfo, ZEND_ACC_PUBLIC)
1636+
PHP_ME(vtiful_xls, insertChart, xls_insert_chart_arginfo, ZEND_ACC_PUBLIC)
1637+
PHP_ME(vtiful_xls, insertUrl, xls_insert_url_arginfo, ZEND_ACC_PUBLIC)
1638+
PHP_ME(vtiful_xls, insertImage, xls_insert_image_arginfo, ZEND_ACC_PUBLIC)
1639+
PHP_ME(vtiful_xls, insertFormula, xls_insert_formula_arginfo, ZEND_ACC_PUBLIC)
1640+
PHP_ME(vtiful_xls, insertComment, xls_insert_comment_arginfo, ZEND_ACC_PUBLIC)
1641+
PHP_ME(vtiful_xls, showComment, xls_show_comment_arginfo, ZEND_ACC_PUBLIC)
1642+
PHP_ME(vtiful_xls, mergeCells, xls_merge_cells_arginfo, ZEND_ACC_PUBLIC)
1643+
PHP_ME(vtiful_xls, setColumn, xls_set_column_arginfo, ZEND_ACC_PUBLIC)
1644+
PHP_ME(vtiful_xls, setRow, xls_set_row_arginfo, ZEND_ACC_PUBLIC)
1645+
PHP_ME(vtiful_xls, getCurrentLine, xls_get_curr_line_arginfo, ZEND_ACC_PUBLIC)
1646+
PHP_ME(vtiful_xls, setCurrentLine, xls_set_curr_line_arginfo, ZEND_ACC_PUBLIC)
1647+
PHP_ME(vtiful_xls, defaultFormat, xls_set_global_format, ZEND_ACC_PUBLIC)
1648+
PHP_ME(vtiful_xls, freezePanes, xls_freeze_panes_arginfo, ZEND_ACC_PUBLIC)
16081649

16091650
PHP_ME(vtiful_xls, protection, xls_protection_arginfo, ZEND_ACC_PUBLIC)
16101651
PHP_ME(vtiful_xls, validation, xls_validation_arginfo, ZEND_ACC_PUBLIC)

tests/get_set_current_line.phpt

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
--TEST--
2+
Check for vtiful presence
3+
--SKIPIF--
4+
<?php if (!extension_loaded("xlswriter")) print "skip"; ?>
5+
--FILE--
6+
<?php
7+
$config = ['path' => './tests'];
8+
9+
$fileObject = new \Vtiful\Kernel\Excel($config);
10+
11+
$fileObject->fileName('tutorial.xlsx')
12+
->header(['name', 'age'])
13+
->setCurrentLine(2)
14+
->data([
15+
['viest', 21],
16+
]);
17+
18+
var_dump($fileObject->getCurrentLine());
19+
20+
$fileObject->output();
21+
?>
22+
--CLEAN--
23+
<?php
24+
@unlink(__DIR__ . '/tutorial.xlsx');
25+
?>
26+
--EXPECT--
27+
int(3)

0 commit comments

Comments
 (0)