Merge pull request #2080 from oleibman/sample19b

Two Problems with Sample19
This commit is contained in:
oleibman 2021-05-18 21:14:23 -07:00 committed by GitHub
commit d0570bc766
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 35 additions and 6 deletions

View File

@ -31,8 +31,8 @@ $spreadsheet->getActiveSheet()->setCellValue('A1', 'Firstname:')
// Define named ranges
$helper->log('Define named ranges');
$spreadsheet->addNamedRange(new NamedRange('PersonName', $spreadsheet->getActiveSheet(), 'B1'));
$spreadsheet->addNamedRange(new NamedRange('PersonLN', $spreadsheet->getActiveSheet(), 'B2'));
$spreadsheet->addNamedRange(new NamedRange('PersonName', $spreadsheet->getActiveSheet(), '$B$1'));
$spreadsheet->addNamedRange(new NamedRange('PersonLN', $spreadsheet->getActiveSheet(), '$B$2'));
// Rename named ranges
$helper->log('Rename named ranges');

View File

@ -1149,10 +1149,6 @@ class Parser
$this->advance();
$result2 = $this->expression();
$result = $this->createTree('ptgNE', $result, $result2);
} elseif ($this->currentToken == '&') {
$this->advance();
$result2 = $this->expression();
$result = $this->createTree('ptgConcat', $result, $result2);
}
return $result;
@ -1203,6 +1199,11 @@ class Parser
return $this->createTree('ptgUplus', $result2, '');
}
$result = $this->term();
while ($this->currentToken === '&') {
$this->advance();
$result2 = $this->expression();
$result = $this->createTree('ptgConcat', $result, $result2);
}
while (
($this->currentToken == '+') ||
($this->currentToken == '-') ||

View File

@ -0,0 +1,28 @@
<?php
namespace PhpOffice\PhpSpreadsheetTests\Writer\Xls;
use PhpOffice\PhpSpreadsheetTests\Functional\AbstractFunctional;
class Sample19Test extends AbstractFunctional
{
public function testSample19Xls(): void
{
$spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
$spreadsheet->setActiveSheetIndex(0);
$spreadsheet->getActiveSheet()->setCellValue('A1', 'Firstname:')
->setCellValue('A2', 'Lastname:')
->setCellValue('A3', 'Fullname:')
->setCellValue('B1', 'Maarten')
->setCellValue('B2', 'Balliauw')
->setCellValue('B3', '=B1 & " " & B2')
->setCellValue('C1', '=A2&A3&A3&A2&B1');
$robj = $this->writeAndReload($spreadsheet, 'Xls');
$sheet0 = $robj->setActiveSheetIndex(0);
// Xls parser eliminates unneeded whitespace
self::assertEquals('=B1&" "&B2', $sheet0->getCell('B3')->getValue());
self::assertEquals('Maarten Balliauw', $sheet0->getCell('B3')->getCalculatedValue());
self::assertEquals('Lastname:Fullname:Fullname:Lastname:Maarten', $sheet0->getCell('C1')->getCalculatedValue());
}
}