Skip to content

Commit cb1fdbc

Browse files
committed
Merge remote-tracking branch 'origin/master' into printed
2 parents 8968e2d + 14e4606 commit cb1fdbc

File tree

8 files changed

+74
-22
lines changed

8 files changed

+74
-22
lines changed

.github/workflows/main.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@ jobs:
2020
php-version: ${{ matrix.php-versions }}
2121

2222
- name: Setup Dependencies
23-
run: sudo apt-get install zlib1g-dev valgrind -y
23+
run: |
24+
sudo apt-get update
25+
sudo apt-get install zlib1g-dev valgrind -y
2426
2527
- name: Setup Submodule
2628
run: git submodule update --init

README.md

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,26 @@
33
</div>
44

55
<div align=center>
6-
<a href="https://travis-ci.org/viest/php-ext-xlswriter"><img src="https://travis-ci.org/viest/php-ext-xlswriter.svg?branch=master"/></a>
7-
<a href="https://ci.appveyor.com/project/viest/php-ext-excel-export/branch/master"><img src="https://ci.appveyor.com/api/projects/status/w4cfjo9e4gsrs6rn/branch/master?svg=true"/></a>
86
<a href="https://github.com/viest/php-ext-xlswriter/releases"><img src="https://img.shields.io/github/release/viest/php-ext-excel-export.svg"/></a>
97
</div>
108

9+
<div align=center>
10+
<a href="https://github.com/viest/php-ext-xlswriter"><img src="https://img.shields.io/badge/platform-macos%20%7C%20linux%20%7C%20windows-brightgreen.svg"/></a>
11+
</div>
12+
13+
<div align=center>
14+
<a href="https://travis-ci.com/viest/php-ext-xlswriter"><img src="https://travis-ci.com/viest/php-ext-xlswriter.svg?branch=master"/></a>
15+
<a href="https://ci.appveyor.com/project/viest/php-ext-excel-export/branch/master"><img src="https://ci.appveyor.com/api/projects/status/w4cfjo9e4gsrs6rn/branch/master?svg=true"/></a>
16+
<a href="https://app.fossa.io/projects/git%2Bgithub.com%2Fviest%2Fphp-ext-xlswriter?ref=badge_shield"><img src="https://app.fossa.io/api/projects/git%2Bgithub.com%2Fviest%2Fphp-ext-xlswriter.svg?type=shield"/></a>
17+
</div>
18+
1119
<div align=center>
1220
<a href="https://opencollective.com/php-ext-xlswriter"><img src="https://opencollective.com/php-ext-xlswriter/all/badge.svg?label=financial+contributors"/></a>
1321
<a href="https://github.com/viest/php-ext-xlswriter"><img src="https://img.shields.io/badge/PHP-%3E%3D%207.0-brightgreen.svg"/></a>
1422
<a href="https://github.com/viest/php-ext-xlswriter"><img src="https://img.shields.io/github/contributors/viest/php-ext-excel-export.svg"/></a>
15-
<a href="https://github.com/viest/php-ext-xlswriter"><img src="https://img.shields.io/badge/platform-macos%20%7C%20linux%20%7C%20windows-brightgreen.svg"/></a>
1623
<a href="https://github.com/viest/php-ext-xlswriter"><img src="https://img.shields.io/badge/license-BSD-green.svg"/></a>
1724
<a href="https://github.com/viest/php-ext-xlswriter"><img src="https://img.shields.io/github/issues/viest/php-ext-excel-export.svg"/></a>
18-
<a href="https://app.fossa.io/projects/git%2Bgithub.com%2Fviest%2Fphp-ext-xlswriter?ref=badge_shield"><img src="https://app.fossa.io/api/projects/git%2Bgithub.com%2Fviest%2Fphp-ext-xlswriter.svg?type=shield"/></a>
25+
<a href="https://hits.seeyoufarm.com"><img src="https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2Fviest%2Fphp-ext-xlswriter&count_bg=%2379C83D&title_bg=%23555555&icon=&icon_color=%23E7E7E7&title=hits&edge_flat=false"/></a>
1926
</div>
2027

2128
## Why use xlswriter
@@ -138,4 +145,4 @@ BSD License
138145

139146
## Stargazers over time
140147

141-
[![Stargazers over time](https://starchart.cc/viest/php-ext-xlswriter.svg)](https://starchart.cc/viest/php-ext-xlswriter)
148+
[![Stargazers over time](https://starchart.cc/viest/php-ext-xlswriter.svg)](https://starchart.cc/viest/php-ext-xlswriter)

README_zh.md

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,26 @@
33
</div>
44

55
<div align=center>
6-
<a href="https://travis-ci.org/viest/php-ext-xlswriter"><img src="https://travis-ci.org/viest/php-ext-xlswriter.svg?branch=master"/></a>
7-
<a href="https://ci.appveyor.com/project/viest/php-ext-excel-export/branch/master"><img src="https://ci.appveyor.com/api/projects/status/w4cfjo9e4gsrs6rn/branch/master?svg=true"/></a>
86
<a href="https://github.com/viest/php-ext-xlswriter/releases"><img src="https://img.shields.io/github/release/viest/php-ext-excel-export.svg"/></a>
97
</div>
108

9+
<div align=center>
10+
<a href="https://github.com/viest/php-ext-xlswriter"><img src="https://img.shields.io/badge/platform-macos%20%7C%20linux%20%7C%20windows-brightgreen.svg"/></a>
11+
</div>
12+
13+
<div align=center>
14+
<a href="https://travis-ci.com/viest/php-ext-xlswriter"><img src="https://travis-ci.com/viest/php-ext-xlswriter.svg?branch=master"/></a>
15+
<a href="https://ci.appveyor.com/project/viest/php-ext-excel-export/branch/master"><img src="https://ci.appveyor.com/api/projects/status/w4cfjo9e4gsrs6rn/branch/master?svg=true"/></a>
16+
<a href="https://app.fossa.io/projects/git%2Bgithub.com%2Fviest%2Fphp-ext-xlswriter?ref=badge_shield"><img src="https://app.fossa.io/api/projects/git%2Bgithub.com%2Fviest%2Fphp-ext-xlswriter.svg?type=shield"/></a>
17+
</div>
18+
1119
<div align=center>
1220
<a href="https://opencollective.com/php-ext-xlswriter"><img src="https://opencollective.com/php-ext-xlswriter/all/badge.svg?label=financial+contributors"/></a>
1321
<a href="https://github.com/viest/php-ext-xlswriter"><img src="https://img.shields.io/badge/PHP-%3E%3D%207.0-brightgreen.svg"/></a>
1422
<a href="https://github.com/viest/php-ext-xlswriter"><img src="https://img.shields.io/github/contributors/viest/php-ext-excel-export.svg"/></a>
15-
<a href="https://github.com/viest/php-ext-xlswriter"><img src="https://img.shields.io/badge/platform-macos%20%7C%20linux%20%7C%20windows-brightgreen.svg"/></a>
1623
<a href="https://github.com/viest/php-ext-xlswriter"><img src="https://img.shields.io/badge/license-BSD-green.svg"/></a>
1724
<a href="https://github.com/viest/php-ext-xlswriter"><img src="https://img.shields.io/github/issues/viest/php-ext-excel-export.svg"/></a>
18-
<a href="https://app.fossa.io/projects/git%2Bgithub.com%2Fviest%2Fphp-ext-xlswriter?ref=badge_shield"><img src="https://app.fossa.io/api/projects/git%2Bgithub.com%2Fviest%2Fphp-ext-xlswriter.svg?type=shield"/></a>
25+
<a href="https://hits.seeyoufarm.com"><img src="https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2Fviest%2Fphp-ext-xlswriter&count_bg=%2379C83D&title_bg=%23555555&icon=&icon_color=%23E7E7E7&title=hits&edge_flat=false"/></a>
1926
</div>
2027

2128
## 为什么使用xlswriter
@@ -125,4 +132,4 @@ BSD license
125132

126133
## Stargazers over time
127134

128-
[![Stargazers over time](https://starchart.cc/viest/php-ext-xlswriter.svg)](https://starchart.cc/viest/php-ext-xlswriter)
135+
[![Stargazers over time](https://starchart.cc/viest/php-ext-xlswriter.svg)](https://starchart.cc/viest/php-ext-xlswriter)

include/read.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ int sheet_read_row(xlsxioreadersheet sheet_t);
2323
void sheet_list(xlsxioreader file_t, zval *zv_result_t);
2424
xlsxioreader file_open(const char *directory, const char *file_name);
2525
void skip_rows(xlsxioreadersheet sheet_t, zval *zv_type_t, zend_long data_type_default, zend_long zl_skip_row);
26-
void load_sheet_all_data(xlsxioreadersheet sheet_t, zval *zv_type_t, zend_long data_type_default, zval *zv_result_t);
26+
void load_sheet_all_data(xlsxioreadersheet sheet_t, zend_long sheet_flag, zval *zv_type_t, zend_long data_type_default, zval *zv_result_t);
27+
void load_sheet_row_data (xlsxioreadersheet sheet_t, zend_long sheet_flag, zval *zv_type_t, zend_long data_type_default, zval *zv_result_t);
2728
xlsxioreadersheet sheet_open(xlsxioreader file_t, const zend_string *zs_sheet_name_t, const zend_long zl_flag);
2829
unsigned int load_sheet_current_row_data(xlsxioreadersheet sheet_t, zval *zv_result_t, zval *zv_type, zend_long data_type_default, unsigned int flag);
2930
unsigned int load_sheet_current_row_data_callback(zend_string *zs_sheet_name_t, xlsxioreader file_t, void *callback_data);

include/xlswriter.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ typedef struct {
4545
xlsxioreader file_t;
4646
xlsxioreadersheet sheet_t;
4747
zend_long data_type_default;
48+
zend_long sheet_flag;
4849
} xls_resource_read_t;
4950

5051
typedef struct {

kernel/excel.c

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1157,16 +1157,16 @@ PHP_METHOD(vtiful_xls, openFile)
11571157

11581158
xls_object* obj = Z_XLS_P(getThis());
11591159

1160-
if (obj->read_ptr.file_t != NULL) {
1161-
xlsxioread_close(obj->read_ptr.file_t);
1162-
obj->read_ptr.file_t = NULL;
1163-
}
1164-
11651160
if (obj->read_ptr.sheet_t != NULL) {
11661161
xlsxioread_sheet_close(obj->read_ptr.sheet_t);
11671162
obj->read_ptr.sheet_t = NULL;
11681163
}
11691164

1165+
if (obj->read_ptr.file_t != NULL) {
1166+
xlsxioread_close(obj->read_ptr.file_t);
1167+
obj->read_ptr.file_t = NULL;
1168+
}
1169+
11701170
obj->read_ptr.file_t = file_open(Z_STRVAL_P(zv_config_path), ZSTR_VAL(zs_file_name));
11711171
}
11721172
/* }}} */
@@ -1196,6 +1196,7 @@ PHP_METHOD(vtiful_xls, openSheet)
11961196
xlsxioread_sheet_close(obj->read_ptr.sheet_t);
11971197
}
11981198

1199+
obj->read_ptr.sheet_flag = zl_flag;
11991200
obj->read_ptr.sheet_t = sheet_open(obj->read_ptr.file_t, zs_sheet_name, zl_flag);
12001201
}
12011202
/* }}} */
@@ -1365,12 +1366,12 @@ PHP_METHOD(vtiful_xls, getSheetData)
13651366
zval *zv_type = zend_read_property(vtiful_xls_ce, PROP_OBJ(getThis()), ZEND_STRL(V_XLS_TYPE), 0, NULL);
13661367

13671368
if (zv_type != NULL && Z_TYPE_P(zv_type) == IS_ARRAY) {
1368-
load_sheet_all_data(obj->read_ptr.sheet_t, zv_type, obj->read_ptr.data_type_default, return_value);
1369+
load_sheet_all_data(obj->read_ptr.sheet_t, obj->read_ptr.sheet_flag, zv_type, obj->read_ptr.data_type_default, return_value);
13691370

13701371
return;
13711372
}
13721373

1373-
load_sheet_all_data(obj->read_ptr.sheet_t, NULL, obj->read_ptr.data_type_default, return_value);
1374+
load_sheet_all_data(obj->read_ptr.sheet_t, obj->read_ptr.sheet_flag, NULL, obj->read_ptr.data_type_default, return_value);
13741375
}
13751376
/* }}} */
13761377

@@ -1395,7 +1396,7 @@ PHP_METHOD(vtiful_xls, nextRow)
13951396
zv_type_t = zend_read_property(vtiful_xls_ce, PROP_OBJ(getThis()), ZEND_STRL(V_XLS_TYPE), 0, NULL);
13961397
}
13971398

1398-
load_sheet_current_row_data(obj->read_ptr.sheet_t, return_value, zv_type_t, obj->read_ptr.data_type_default, READ_ROW);
1399+
load_sheet_row_data(obj->read_ptr.sheet_t, obj->read_ptr.sheet_flag, zv_type_t, obj->read_ptr.data_type_default, return_value);
13991400
}
14001401
/* }}} */
14011402

kernel/read.c

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -390,7 +390,32 @@ unsigned int load_sheet_current_row_data_callback (zend_string *zs_sheet_name_t,
390390
/* }}} */
391391

392392
/* {{{ */
393-
void load_sheet_all_data (xlsxioreadersheet sheet_t, zval *zv_type_t, zend_long data_type_default, zval *zv_result_t)
393+
void load_sheet_row_data (xlsxioreadersheet sheet_t, zend_long sheet_flag, zval *zv_type_t, zend_long data_type_default, zval *zv_result_t)
394+
{
395+
size_t row_index = 0;
396+
397+
do {
398+
load_sheet_current_row_data(sheet_t, zv_result_t, zv_type_t, data_type_default, READ_ROW);
399+
400+
if (row_index == xlsxioread_sheet_last_row_index(sheet_t)) {
401+
return;
402+
}
403+
404+
row_index = xlsxioread_sheet_last_row_index(sheet_t);
405+
406+
if (sheet_flag & XLSXIOREAD_SKIP_EMPTY_ROWS
407+
&& Z_TYPE_P(zv_result_t) == IS_ARRAY
408+
&& zend_hash_num_elements(Z_ARR_P(zv_result_t)) == 0) {
409+
continue;
410+
}
411+
412+
return;
413+
} while (1);
414+
}
415+
/* }}} */
416+
417+
/* {{{ */
418+
void load_sheet_all_data (xlsxioreadersheet sheet_t, zend_long sheet_flag, zval *zv_type_t, zend_long data_type_default, zval *zv_result_t)
394419
{
395420
if (Z_TYPE_P(zv_result_t) != IS_ARRAY) {
396421
array_init(zv_result_t);
@@ -402,6 +427,14 @@ void load_sheet_all_data (xlsxioreadersheet sheet_t, zval *zv_type_t, zend_long
402427
ZVAL_NULL(&_zv_tmp_row);
403428

404429
load_sheet_current_row_data(sheet_t, &_zv_tmp_row, zv_type_t, data_type_default, READ_SKIP_ROW);
430+
431+
if (sheet_flag & XLSXIOREAD_SKIP_EMPTY_ROWS
432+
&& Z_TYPE(_zv_tmp_row) == IS_ARRAY
433+
&& zend_hash_num_elements(Z_ARR(_zv_tmp_row)) == 0) {
434+
zval_ptr_dtor(&_zv_tmp_row);
435+
continue;
436+
}
437+
405438
add_next_index_zval(zv_result_t, &_zv_tmp_row);
406439
}
407440
}

tests/fix-207.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,4 +72,4 @@ array(2) {
7272
[1]=>
7373
int(24)
7474
}
75-
}
75+
}

0 commit comments

Comments
 (0)