mirror of
https://github.com/PHPOffice/PhpSpreadsheet.git
synced 2026-08-30 03:59:11 +00:00
91 lines
2.3 KiB
PHP
91 lines
2.3 KiB
PHP
<?php
|
|
|
|
namespace PhpOffice\PhpSpreadsheetTests\Reader\Ods;
|
|
|
|
use PhpOffice\PhpSpreadsheet\Reader\Ods;
|
|
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
class ArrayFormulaTest extends TestCase
|
|
{
|
|
/**
|
|
* @var Spreadsheet
|
|
*/
|
|
private $spreadsheet;
|
|
|
|
protected function setUp(): void
|
|
{
|
|
$filename = 'tests/data/Reader/Ods/ArrayFormulaTest.ods';
|
|
$reader = new Ods();
|
|
$this->spreadsheet = $reader->load($filename);
|
|
}
|
|
|
|
/**
|
|
* @dataProvider arrayFormulaReaderProvider
|
|
*
|
|
* @param mixed $expectedValue
|
|
*/
|
|
public function testArrayFormulaReader(
|
|
string $cellAddress,
|
|
string $expectedRange,
|
|
string $expectedFormula,
|
|
$expectedValue
|
|
): void {
|
|
$worksheet = $this->spreadsheet->getActiveSheet();
|
|
|
|
$cell = $worksheet->getCell($cellAddress);
|
|
self::assertTrue($cell->isArrayFormula());
|
|
self::assertSame($expectedRange, $cell->arrayFormulaRange());
|
|
self::assertSame($expectedFormula, strtoupper($cell->getValue()));
|
|
self::assertSame($expectedValue, $cell->getCalculatedValue(true, true));
|
|
}
|
|
|
|
public function arrayFormulaReaderProvider(): array
|
|
{
|
|
return [
|
|
[
|
|
'B2',
|
|
'B2:C3',
|
|
'={2,3}*{4;5}',
|
|
[[8, 12], [10, 15]],
|
|
],
|
|
[
|
|
'E1',
|
|
'E1:H1',
|
|
'=SIN({-1,0,1,2})',
|
|
[[-0.8414709848078965, 0.0, 0.8414709848078965, 0.9092974268256817]],
|
|
],
|
|
[
|
|
'E3',
|
|
'E3',
|
|
'=MAX(SIN({-1,0,1,2}))',
|
|
0.9092974268256817,
|
|
],
|
|
[
|
|
'D5',
|
|
'D5:E6',
|
|
'=A5:B5*A5:A6',
|
|
[[4, 6], [8, 12]],
|
|
],
|
|
[
|
|
'D8',
|
|
'D8:E9',
|
|
'=A8:B8*A8:A9',
|
|
[[9, 12], [15, 20]],
|
|
],
|
|
[
|
|
'D11',
|
|
'D11:E12',
|
|
'=A11:B11*A11:A12',
|
|
[[16, 20], [24, 30]],
|
|
],
|
|
[
|
|
'D14',
|
|
'D14:E15',
|
|
'=A14:B14*A14:A15',
|
|
[[25, 30], [35, 42]],
|
|
],
|
|
];
|
|
}
|
|
}
|