From b79b791eda2900833492316118ca76663b86dc0c Mon Sep 17 00:00:00 2001 From: viest Date: Mon, 12 Jul 2021 22:25:43 +0800 Subject: [PATCH] Feat: existSheet --- kernel/excel.c | 31 +++++++++++++++++++++++++++++++ tests/exist_sheet.phpt | 23 +++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 tests/exist_sheet.phpt diff --git a/kernel/excel.c b/kernel/excel.c index 2656d9b..1ead914 100644 --- a/kernel/excel.c +++ b/kernel/excel.c @@ -82,6 +82,10 @@ ZEND_BEGIN_ARG_INFO_EX(xls_file_add_sheet, 0, 0, 1) ZEND_ARG_INFO(0, sheet_name) ZEND_END_ARG_INFO() +ZEND_BEGIN_ARG_INFO_EX(xls_file_exist_sheet, 0, 0, 1) + ZEND_ARG_INFO(0, sheet_name) +ZEND_END_ARG_INFO() + ZEND_BEGIN_ARG_INFO_EX(xls_file_checkout_sheet, 0, 0, 1) ZEND_ARG_INFO(0, sheet_name) ZEND_END_ARG_INFO() @@ -385,6 +389,32 @@ PHP_METHOD(vtiful_xls, addSheet) } /* }}} */ +/** {{{ \Vtiful\Kernel\Excel::existSheet(string $sheetName) + */ +PHP_METHOD(vtiful_xls, existSheet) +{ + char *sheet_name = NULL; + zend_string *zs_sheet_name = NULL; + + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_STR(zs_sheet_name) + ZEND_PARSE_PARAMETERS_END(); + + xls_object *obj = Z_XLS_P(getThis()); + + WORKBOOK_NOT_INITIALIZED(obj); + SHEET_LINE_INIT(obj) + + sheet_name = ZSTR_VAL(zs_sheet_name); + + if (workbook_get_worksheet_by_name(obj->write_ptr.workbook, sheet_name)) { + RETURN_TRUE; + } + + RETURN_FALSE; +} +/* }}} */ + /** {{{ \Vtiful\Kernel\Excel::checkoutSheet(string $sheetName) */ PHP_METHOD(vtiful_xls, checkoutSheet) @@ -1502,6 +1532,7 @@ zend_function_entry xls_methods[] = { PHP_ME(vtiful_xls, close, xls_close_arginfo, ZEND_ACC_PUBLIC) PHP_ME(vtiful_xls, fileName, xls_file_name_arginfo, ZEND_ACC_PUBLIC) PHP_ME(vtiful_xls, addSheet, xls_file_add_sheet, ZEND_ACC_PUBLIC) + PHP_ME(vtiful_xls, existSheet, xls_file_exist_sheet, ZEND_ACC_PUBLIC) PHP_ME(vtiful_xls, checkoutSheet, xls_file_checkout_sheet, ZEND_ACC_PUBLIC) PHP_ME(vtiful_xls, activateSheet, xls_file_activate_sheet, ZEND_ACC_PUBLIC) PHP_ME(vtiful_xls, constMemory, xls_const_memory_arginfo, ZEND_ACC_PUBLIC) diff --git a/tests/exist_sheet.phpt b/tests/exist_sheet.phpt new file mode 100644 index 0000000..ab95e70 --- /dev/null +++ b/tests/exist_sheet.phpt @@ -0,0 +1,23 @@ +--TEST-- +Check for vtiful presence +--SKIPIF-- + +--FILE-- + './tests']; + +$fileObject = new \Vtiful\Kernel\Excel($config); + +$fileObject->fileName('tutorial.xlsx') + ->addSheet('twoSheet'); + +var_dump($fileObject->existSheet('twoSheet')); +var_dump($fileObject->existSheet('notFoundSheet')); +?> +--CLEAN-- + +--EXPECT-- +bool(true) +bool(false)