Skip to content

Commit 8ff01f8

Browse files
authored
[Excel] Add a new Excel Adapter with an extractor (#1643)
Add a new Excel Adapter with an extractor
1 parent 5f7b332 commit 8ff01f8

56 files changed

Lines changed: 2032 additions & 35 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/monorepo-split.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,8 @@ jobs:
5555
split_repository: 'etl-adapter-doctrine'
5656
- local_path: 'src/adapter/etl-adapter-elasticsearch'
5757
split_repository: 'etl-adapter-elasticsearch'
58-
- local_path: 'src/adapter/etl-adapter-meilisearch'
59-
split_repository: 'etl-adapter-meilisearch'
58+
- local_path: 'src/adapter/etl-adapter-excel'
59+
split_repository: 'etl-adapter-excel'
6060
- local_path: 'src/adapter/etl-adapter-google-sheet'
6161
split_repository: 'etl-adapter-google-sheet'
6262
- local_path: 'src/adapter/etl-adapter-http'
@@ -65,6 +65,8 @@ jobs:
6565
split_repository: 'etl-adapter-json'
6666
- local_path: 'src/adapter/etl-adapter-logger'
6767
split_repository: 'etl-adapter-logger'
68+
- local_path: 'src/adapter/etl-adapter-meilisearch'
69+
split_repository: 'etl-adapter-meilisearch'
6870
- local_path: 'src/adapter/etl-adapter-parquet'
6971
split_repository: 'etl-adapter-parquet'
7072
- local_path: 'src/adapter/etl-adapter-text'

.github/workflows/test-suite.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,9 @@ jobs:
223223
- name: "Test - Adapter - Elasticsearch"
224224
run: "composer test:adapter:elasticsearch"
225225

226+
- name: "Test - Adapter - Excel"
227+
run: "composer test:adapter:excel"
228+
226229
- name: "Test - Adapter - Google Sheet"
227230
run: "composer test:adapter:google-sheet"
228231

composer.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
"halaxa/json-machine": "^1.1",
3131
"meilisearch/meilisearch-php": "^1.11",
3232
"monolog/monolog": "^2.0||^3.0",
33+
"openspout/openspout": "^4.0",
3334
"packaged/thrift": "^0.15.0",
3435
"php-http/discovery": "^1.0",
3536
"psr/clock": "^1.0",
@@ -70,6 +71,7 @@
7071
"flow-php/etl-adapter-csv": "self.version",
7172
"flow-php/etl-adapter-doctrine": "self.version",
7273
"flow-php/etl-adapter-elasticsearch": "self.version",
74+
"flow-php/etl-adapter-excel": "self.version",
7375
"flow-php/etl-adapter-filesystem": "self.version",
7476
"flow-php/etl-adapter-google-sheet": "self.version",
7577
"flow-php/etl-adapter-http": "self.version",
@@ -101,6 +103,7 @@
101103
"src/adapter/etl-adapter-csv/src/Flow",
102104
"src/adapter/etl-adapter-doctrine/src/Flow",
103105
"src/adapter/etl-adapter-elasticsearch/src/Flow",
106+
"src/adapter/etl-adapter-excel/src/Flow",
104107
"src/adapter/etl-adapter-google-sheet/src/Flow",
105108
"src/adapter/etl-adapter-http/src/Flow",
106109
"src/adapter/etl-adapter-json/src/Flow",
@@ -139,6 +142,7 @@
139142
"src/adapter/etl-adapter-csv/src/Flow/ETL/Adapter/CSV/functions.php",
140143
"src/adapter/etl-adapter-doctrine/src/Flow/ETL/Adapter/Doctrine/functions.php",
141144
"src/adapter/etl-adapter-elasticsearch/src/Flow/ETL/Adapter/Elasticsearch/functions.php",
145+
"src/adapter/etl-adapter-excel/src/Flow/ETL/Adapter/Excel/DSL/functions.php",
142146
"src/adapter/etl-adapter-google-sheet/src/Flow/ETL/Adapter/GoogleSheet/functions.php",
143147
"src/adapter/etl-adapter-json/src/Flow/ETL/Adapter/JSON/functions.php",
144148
"src/adapter/etl-adapter-meilisearch/src/Flow/ETL/Adapter/Meilisearch/functions.php",
@@ -168,6 +172,7 @@
168172
"src/adapter/etl-adapter-csv/tests/Flow",
169173
"src/adapter/etl-adapter-doctrine/tests/Flow",
170174
"src/adapter/etl-adapter-elasticsearch/tests/Flow",
175+
"src/adapter/etl-adapter-excel/tests/Flow",
171176
"src/adapter/etl-adapter-google-sheet/tests/Flow",
172177
"src/adapter/etl-adapter-http/tests/Flow",
173178
"src/adapter/etl-adapter-json/tests/Flow",
@@ -240,6 +245,7 @@
240245
"@test:adapter:csv",
241246
"@test:adapter:doctrine",
242247
"@test:adapter:elasticsearch",
248+
"@test:adapter:excel",
243249
"@test:adapter:google-sheet",
244250
"@test:adapter:http",
245251
"@test:adapter:json",
@@ -314,6 +320,10 @@
314320
"tools/phpunit/vendor/bin/phpunit --testsuite=adapter-elasticsearch-unit --log-junit ./var/phpunit/logs/adapter-elasticsearch-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-elasticsearch-unit.coverage.xml --coverage-html=./var/phpunit/coverage/html/adapter-elasticsearch-unit",
315321
"tools/phpunit/vendor/bin/phpunit --testsuite=adapter-elasticsearch-integration --log-junit ./var/phpunit/logs/adapter-elasticsearch-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-elasticsearch-integration.coverage.xml --coverage-html=./var/phpunit/coverage/html/adapter-elasticsearch-integration"
316322
],
323+
"test:adapter:excel": [
324+
"tools/phpunit/vendor/bin/phpunit --testsuite=adapter-excel-unit --log-junit ./var/phpunit/logs/adapter-excel-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-excel-unit.coverage.xml --coverage-html=./var/phpunit/coverage/html/adapter-excel-unit",
325+
"tools/phpunit/vendor/bin/phpunit --testsuite=adapter-excel-integration --log-junit ./var/phpunit/logs/adapter-excel-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-excel-integration.coverage.xml --coverage-html=./var/phpunit/coverage/html/adapter-excel-integration"
326+
],
317327
"test:adapter:google-sheet": [
318328
"tools/phpunit/vendor/bin/phpunit --testsuite=adapter-google-sheet-unit --log-junit ./var/phpunit/logs/adapter-google-sheet-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-google-sheet-unit.coverage.xml --coverage-html=./var/phpunit/coverage/html/adapter-google-sheet-unit",
319329
"tools/phpunit/vendor/bin/phpunit --testsuite=adapter-google-sheet-integration --log-junit ./var/phpunit/coverage/clover/adapter-google-sheet-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-google-sheet-integration.coverage.xml --coverage-html=./var/phpunit/coverage/html/adapter-google-sheet-integration"
@@ -416,6 +426,7 @@
416426
"./tools/phpdocumentor/vendor/bin/phpdoc --config=./phpdoc/adapter.csv.xml",
417427
"./tools/phpdocumentor/vendor/bin/phpdoc --config=./phpdoc/adapter.doctrine.xml",
418428
"./tools/phpdocumentor/vendor/bin/phpdoc --config=./phpdoc/adapter.elasticsearch.xml",
429+
"./tools/phpdocumentor/vendor/bin/phpdoc --config=./phpdoc/adapter.excel.xml",
419430
"./tools/phpdocumentor/vendor/bin/phpdoc --config=./phpdoc/adapter.google-sheet.xml",
420431
"./tools/phpdocumentor/vendor/bin/phpdoc --config=./phpdoc/adapter.http.xml",
421432
"./tools/phpdocumentor/vendor/bin/phpdoc --config=./phpdoc/adapter.json.xml",

composer.lock

Lines changed: 94 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
# Excel Adapter
2+
3+
- [⬅️️ Back](../../introduction.md)
4+
- [📚API Reference](/documentation/api/adapter/excel)
5+
- [📁Files](/documentation/api/adapter/excel/indices/files.html)
6+
7+
Flow PHP's Adapter Excel is a comprehensive library engineered to enable smooth interactions with Excel
8+
within your ETL (Extract, Transform, Load) workflows. This adapter is indispensable for developers looking to seamlessly
9+
extract from or load data into Excel, ensuring a coherent and reliable data transformation journey. By
10+
leveraging the Adapter Excel library, developers can utilize a robust set of features designed for precise
11+
interaction with Excel, simplifying complex data transformations and enhancing data processing efficiency. The
12+
Adapter Excel library encapsulates a wide range of functionalities, providing a streamlined API for managing
13+
Excel tasks, which is essential in modern data processing and transformation scenarios. This library reflects
14+
Flow PHP's dedication to offering versatile and effective data processing solutions, making it an optimal choice for
15+
developers dealing with Excel in large-scale and data-intensive projects. With Flow PHP's Adapter Excel,
16+
managing Excel data within your ETL workflows becomes a more simplified and efficient task, perfectly aligning
17+
with the robust and adaptable nature of the Flow PHP ecosystem.
18+
19+
## Installation
20+
21+
```
22+
composer require flow-php/etl-adapter-excel:~--FLOW_PHP_VERSION--
23+
```
24+
25+
## Extractor
26+
27+
```php
28+
<?php
29+
30+
$rows = data_frame()
31+
->read(from_excel('path/to/your/excel.xlsx'))
32+
->fetch();
33+
```
34+
35+
```php
36+
<?php
37+
38+
$rows = data_frame()
39+
->read(from_excel('path/to/your/excel.ods'))
40+
->fetch();
41+
```
42+
43+
```php
44+
<?php
45+
46+
$rows = data_frame()
47+
->read(
48+
from_excel('path/to/your/excel.xlsx')
49+
->withSheetName('Sheet name')
50+
)
51+
->fetch();
52+
```
53+
54+
```php
55+
<?php
56+
57+
$rows = data_frame()
58+
->read(
59+
from_excel('path/to/your/excel.xlsx')
60+
->withHeaders(false)
61+
->withOffset(5)
62+
)
63+
->fetch();
64+
```

documentation/components/adapters/text.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ $rows = (new Flow())
3939

4040
> :warning: Heads up, TextLoader expects rows to have single entry in order to properly write them into file.
4141
42-
```php
42+
```php
4343
<?php
4444

4545
use Flow\ETL\DSL\Text;

0 commit comments

Comments
 (0)