mirror of
https://github.com/PHPOffice/PhpSpreadsheet.git
synced 2026-09-20 15:16:36 +00:00
6b61da0017
Fix #4416. A peculiar problem indeed. PhpSpreadsheet has been considering a column to be filtered if any cell in the column is filtered and does not preserve the column width if that is the case. It should consider the column not filtered if any cell in the column is not filtered, and consider it filtered only if there are no cells to which that applies. At least, that's how I think it should work, and this change doesn't break any existing tests, and solves this issue.
83 lines
2.3 KiB
PHP
83 lines
2.3 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace PhpOffice\PhpSpreadsheetTests\Reader\Xlsx;
|
|
|
|
use PhpOffice\PhpSpreadsheet\Reader\Xlsx as XlsxReader;
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
class Issue4416Test extends TestCase
|
|
{
|
|
private static string $file = 'tests/data/Reader/XLSX/issue.4416.smallauto.xlsx';
|
|
|
|
public function testNoFilter(): void
|
|
{
|
|
$file = self::$file;
|
|
$reader = new XlsxReader();
|
|
$spreadsheet = $reader->load($file);
|
|
$sheet = $spreadsheet->getActiveSheet();
|
|
self::assertEqualsWithDelta(
|
|
16.5430,
|
|
$sheet->getColumnDimension('A')->getWidth(),
|
|
1E-4
|
|
);
|
|
self::assertEqualsWithDelta(
|
|
6.0,
|
|
$sheet->getColumnDimension('B')->getWidth(),
|
|
1E-4
|
|
);
|
|
self::assertEqualsWithDelta(
|
|
11.3633,
|
|
$sheet->getColumnDimension('C')->getWidth(),
|
|
1E-4
|
|
);
|
|
self::assertEqualsWithDelta(
|
|
41.0898,
|
|
$sheet->getColumnDimension('D')->getWidth(),
|
|
1E-4
|
|
);
|
|
self::assertEqualsWithDelta(
|
|
28.5,
|
|
$sheet->getRowDimension(6)->getRowHeight(),
|
|
1E-4
|
|
);
|
|
$spreadsheet->disconnectWorksheets();
|
|
}
|
|
|
|
public function testWithFilter(): void
|
|
{
|
|
$file = self::$file;
|
|
$reader = new XlsxReader();
|
|
$reader->setReadFilter(new Issue4416Filter());
|
|
$spreadsheet = $reader->load($file);
|
|
$sheet = $spreadsheet->getActiveSheet();
|
|
self::assertEqualsWithDelta(
|
|
16.5430,
|
|
$sheet->getColumnDimension('A')->getWidth(),
|
|
1E-4
|
|
);
|
|
self::assertEqualsWithDelta(
|
|
6.0,
|
|
$sheet->getColumnDimension('B')->getWidth(),
|
|
1E-4
|
|
);
|
|
self::assertEqualsWithDelta(
|
|
11.3633,
|
|
$sheet->getColumnDimension('C')->getWidth(),
|
|
1E-4
|
|
);
|
|
self::assertEqualsWithDelta(
|
|
41.0898,
|
|
$sheet->getColumnDimension('D')->getWidth(),
|
|
1E-4
|
|
);
|
|
self::assertEquals(
|
|
-1,
|
|
$sheet->getRowDimension(6)->getRowHeight(),
|
|
'row has been filtered away'
|
|
);
|
|
$spreadsheet->disconnectWorksheets();
|
|
}
|
|
}
|