mirror of
https://github.com/PHPOffice/PhpSpreadsheet.git
synced 2026-09-24 17:19:29 +00:00
190af743f8
When I implemented IgnoredErrors (PR #3508), I dealt only with those that I understood well enough to come up with an example. I finally found an example for FormulaRange in the wild, so this PR adds it. Still unsupported are `calculatedColumn`, `emptyCellReferece`, `listDataValidation`, and `unlockedFormula`.
73 lines
4.0 KiB
PHP
73 lines
4.0 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace PhpOffice\PhpSpreadsheetTests\Reader\Xlsx;
|
|
|
|
use PhpOffice\PhpSpreadsheet\Cell\DataType;
|
|
use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
|
|
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
|
use PhpOffice\PhpSpreadsheetTests\Functional\AbstractFunctional;
|
|
|
|
class IgnoredErrorTest extends AbstractFunctional
|
|
{
|
|
private const FILENAME = 'tests/data/Reader/XLSX/ignoreerror.xlsx';
|
|
|
|
public function testIgnoredError(): void
|
|
{
|
|
$reader = new Xlsx();
|
|
$originalSpreadsheet = $reader->load(self::FILENAME);
|
|
$spreadsheet = $this->writeAndReload($originalSpreadsheet, 'Xlsx');
|
|
$originalSpreadsheet->disconnectWorksheets();
|
|
$sheet = $spreadsheet->getActiveSheet();
|
|
self::assertFalse($sheet->getCell('A1')->getIgnoredErrors()->getNumberStoredAsText());
|
|
self::assertTrue($sheet->getCell('A2')->getIgnoredErrors()->getNumberStoredAsText());
|
|
self::assertFalse($sheet->getCell('A3')->getIgnoredErrors()->getNumberStoredAsText());
|
|
self::assertTrue($sheet->getCell('A4')->getIgnoredErrors()->getNumberStoredAsText());
|
|
self::assertFalse($sheet->getCell('H2')->getIgnoredErrors()->getNumberStoredAsText());
|
|
self::assertTrue($sheet->getCell('H3')->getIgnoredErrors()->getNumberStoredAsText());
|
|
self::assertFalse($sheet->getCell('I2')->getIgnoredErrors()->getNumberStoredAsText());
|
|
self::assertTrue($sheet->getCell('I3')->getIgnoredErrors()->getNumberStoredAsText());
|
|
|
|
self::assertFalse($sheet->getCell('H3')->getIgnoredErrors()->getFormula());
|
|
self::assertFalse($sheet->getCell('D2')->getIgnoredErrors()->getFormula());
|
|
self::assertTrue($sheet->getCell('D3')->getIgnoredErrors()->getFormula());
|
|
|
|
self::assertFalse($sheet->getCell('A11')->getIgnoredErrors()->getTwoDigitTextYear());
|
|
self::assertTrue($sheet->getCell('A12')->getIgnoredErrors()->getTwoDigitTextYear());
|
|
|
|
self::assertFalse($sheet->getCell('C12')->getIgnoredErrors()->getEvalError());
|
|
self::assertTrue($sheet->getCell('C11')->getIgnoredErrors()->getEvalError());
|
|
self::assertFalse($sheet->getCell('E14')->getIgnoredErrors()->getFormulaRange());
|
|
self::assertTrue($sheet->getCell('F14')->getIgnoredErrors()->getFormulaRange());
|
|
|
|
$sheetLast = $spreadsheet->getSheetByNameOrThrow('Last');
|
|
self::assertFalse($sheetLast->getCell('D2')->getIgnoredErrors()->getFormula());
|
|
self::assertFalse($sheetLast->getCell('D3')->getIgnoredErrors()->getFormula(), 'prior sheet ignoredErrors shouldn\'t bleed');
|
|
self::assertFalse($sheetLast->getCell('A1')->getIgnoredErrors()->getNumberStoredAsText());
|
|
self::assertFalse($sheetLast->getCell('A2')->getIgnoredErrors()->getNumberStoredAsText());
|
|
self::assertTrue($sheetLast->getCell('A3')->getIgnoredErrors()->getNumberStoredAsText());
|
|
self::assertFalse($sheetLast->getCell('A4')->getIgnoredErrors()->getNumberStoredAsText(), 'prior sheet numberStoredAsText shouldn\'t bleed');
|
|
|
|
$spreadsheet->disconnectWorksheets();
|
|
}
|
|
|
|
public function testSetIgnoredError(): void
|
|
{
|
|
$originalSpreadsheet = new Spreadsheet();
|
|
$originalSheet = $originalSpreadsheet->getActiveSheet();
|
|
$originalSheet->getCell('A1')->setValueExplicit('0', DataType::TYPE_STRING);
|
|
$originalSheet->getCell('A2')->setValueExplicit('1', DataType::TYPE_STRING);
|
|
$originalSheet->getStyle('A1:A2')->setQuotePrefix(true);
|
|
$originalSheet->getCell('A2')->getIgnoredErrors()->setNumberStoredAsText(true);
|
|
$spreadsheet = $this->writeAndReload($originalSpreadsheet, 'Xlsx');
|
|
$originalSpreadsheet->disconnectWorksheets();
|
|
$sheet = $spreadsheet->getActiveSheet();
|
|
self::assertSame('0', $sheet->getCell('A1')->getValue());
|
|
self::assertSame('1', $sheet->getCell('A2')->getValue());
|
|
self::assertFalse($sheet->getCell('A1')->getIgnoredErrors()->getNumberStoredAsText());
|
|
self::assertTrue($sheet->getCell('A2')->getIgnoredErrors()->getNumberStoredAsText());
|
|
$spreadsheet->disconnectWorksheets();
|
|
}
|
|
}
|