Unit testing for row/column/worksheet visibility for Xls and Xlsx files (#2059)
* Unit testing for row/column/worksheet visibility for Xls and Xlsx files * Include very hidden in worksheet visibility tests
This commit is contained in:
parent
2b268c8dd9
commit
5873116488
|
|
@ -2166,7 +2166,9 @@ class Worksheet extends BIFFwriter
|
||||||
*/
|
*/
|
||||||
public function insertBitmap($row, $col, $bitmap, $x = 0, $y = 0, $scale_x = 1, $scale_y = 1): void
|
public function insertBitmap($row, $col, $bitmap, $x = 0, $y = 0, $scale_x = 1, $scale_y = 1): void
|
||||||
{
|
{
|
||||||
$bitmap_array = (is_resource($bitmap) || $bitmap instanceof GdImage ? $this->processBitmapGd($bitmap) : $this->processBitmap($bitmap));
|
$bitmap_array = (is_resource($bitmap) || $bitmap instanceof GdImage
|
||||||
|
? $this->processBitmapGd($bitmap)
|
||||||
|
: $this->processBitmap($bitmap));
|
||||||
[$width, $height, $size, $data] = $bitmap_array;
|
[$width, $height, $size, $data] = $bitmap_array;
|
||||||
|
|
||||||
// Scale the frame of the image.
|
// Scale the frame of the image.
|
||||||
|
|
|
||||||
|
|
@ -1,37 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace PhpOffice\PhpSpreadsheetTests\Writer\Xls;
|
|
||||||
|
|
||||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
|
||||||
use PhpOffice\PhpSpreadsheetTests\Functional\AbstractFunctional;
|
|
||||||
|
|
||||||
class RowVisibilityTest extends AbstractFunctional
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @dataProvider dataProviderReoVisibility
|
|
||||||
*/
|
|
||||||
public function testRowVisibility(array $visibleRows): void
|
|
||||||
{
|
|
||||||
$spreadsheet = new Spreadsheet();
|
|
||||||
$worksheet = $spreadsheet->getActiveSheet();
|
|
||||||
foreach ($visibleRows as $row => $visibility) {
|
|
||||||
$worksheet->setCellValue("A{$row}", $row);
|
|
||||||
$worksheet->getRowDimension($row)->setVisible($visibility);
|
|
||||||
}
|
|
||||||
|
|
||||||
$reloadedSpreadsheet = $this->writeAndReload($spreadsheet, 'Xls');
|
|
||||||
$reloadedWorksheet = $reloadedSpreadsheet->getActiveSheet();
|
|
||||||
foreach ($visibleRows as $row => $visibility) {
|
|
||||||
self::assertSame($visibility, $reloadedWorksheet->getRowDimension($row)->getVisible());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function dataProviderReoVisibility(): array
|
|
||||||
{
|
|
||||||
return [
|
|
||||||
[
|
|
||||||
[1 => true, 2 => false, 3 => false, 4 => true, 5 => true, 6 => false],
|
|
||||||
],
|
|
||||||
];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,99 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Writer\Xls;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
|
||||||
|
use PhpOffice\PhpSpreadsheetTests\Functional\AbstractFunctional;
|
||||||
|
|
||||||
|
class VisibilityTest extends AbstractFunctional
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @dataProvider dataProviderRowVisibility
|
||||||
|
*/
|
||||||
|
public function testRowVisibility(array $visibleRows): void
|
||||||
|
{
|
||||||
|
$spreadsheet = new Spreadsheet();
|
||||||
|
$worksheet = $spreadsheet->getActiveSheet();
|
||||||
|
foreach ($visibleRows as $row => $visibility) {
|
||||||
|
$worksheet->setCellValue("A{$row}", $row);
|
||||||
|
$worksheet->getRowDimension($row)->setVisible($visibility);
|
||||||
|
}
|
||||||
|
|
||||||
|
$reloadedSpreadsheet = $this->writeAndReload($spreadsheet, 'Xls');
|
||||||
|
$reloadedWorksheet = $reloadedSpreadsheet->getActiveSheet();
|
||||||
|
foreach ($visibleRows as $row => $visibility) {
|
||||||
|
self::assertSame($visibility, $reloadedWorksheet->getRowDimension($row)->getVisible());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function dataProviderRowVisibility(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
[
|
||||||
|
[1 => true, 2 => false, 3 => false, 4 => true, 5 => true, 6 => false],
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider dataProviderColumnVisibility
|
||||||
|
*/
|
||||||
|
public function testColumnVisibility(array $visibleColumns): void
|
||||||
|
{
|
||||||
|
$spreadsheet = new Spreadsheet();
|
||||||
|
$worksheet = $spreadsheet->getActiveSheet();
|
||||||
|
foreach ($visibleColumns as $column => $visibility) {
|
||||||
|
$worksheet->setCellValue("{$column}1", $column);
|
||||||
|
$worksheet->getColumnDimension($column)->setVisible($visibility);
|
||||||
|
}
|
||||||
|
|
||||||
|
$reloadedSpreadsheet = $this->writeAndReload($spreadsheet, 'Xls');
|
||||||
|
$reloadedWorksheet = $reloadedSpreadsheet->getActiveSheet();
|
||||||
|
foreach ($visibleColumns as $column => $visibility) {
|
||||||
|
self::assertSame($visibility, $reloadedWorksheet->getColumnDimension($column)->getVisible());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function dataProviderColumnVisibility(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
[
|
||||||
|
['A' => true, 'B' => false, 'C' => false, 'D' => true, 'E' => true, 'F' => false],
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider dataProviderSheetVisibility
|
||||||
|
*/
|
||||||
|
public function testSheetVisibility(array $visibleSheets): void
|
||||||
|
{
|
||||||
|
$spreadsheet = new Spreadsheet();
|
||||||
|
$spreadsheet->removeSheetByIndex(0);
|
||||||
|
foreach ($visibleSheets as $sheetName => $visibility) {
|
||||||
|
$worksheet = $spreadsheet->addSheet(new Worksheet($spreadsheet, $sheetName));
|
||||||
|
$worksheet->setCellValue('A1', $sheetName);
|
||||||
|
$worksheet->setSheetState($visibility);
|
||||||
|
}
|
||||||
|
|
||||||
|
$reloadedSpreadsheet = $this->writeAndReload($spreadsheet, 'Xls');
|
||||||
|
foreach ($visibleSheets as $sheetName => $visibility) {
|
||||||
|
$reloadedWorksheet = $reloadedSpreadsheet->getSheetByName($sheetName) ?? new Worksheet();
|
||||||
|
self::assertSame($visibility, $reloadedWorksheet->getSheetState());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function dataProviderSheetVisibility(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
'Worksheet 1' => Worksheet::SHEETSTATE_HIDDEN,
|
||||||
|
'Worksheet 2' => Worksheet::SHEETSTATE_VERYHIDDEN,
|
||||||
|
'Worksheet 3' => Worksheet::SHEETSTATE_VISIBLE,
|
||||||
|
],
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,99 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Writer\Xlsx;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
|
||||||
|
use PhpOffice\PhpSpreadsheetTests\Functional\AbstractFunctional;
|
||||||
|
|
||||||
|
class VisibilityTest extends AbstractFunctional
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @dataProvider dataProviderRowVisibility
|
||||||
|
*/
|
||||||
|
public function testRowVisibility(array $visibleRows): void
|
||||||
|
{
|
||||||
|
$spreadsheet = new Spreadsheet();
|
||||||
|
$worksheet = $spreadsheet->getActiveSheet();
|
||||||
|
foreach ($visibleRows as $row => $visibility) {
|
||||||
|
$worksheet->setCellValue("A{$row}", $row);
|
||||||
|
$worksheet->getRowDimension($row)->setVisible($visibility);
|
||||||
|
}
|
||||||
|
|
||||||
|
$reloadedSpreadsheet = $this->writeAndReload($spreadsheet, 'Xlsx');
|
||||||
|
$reloadedWorksheet = $reloadedSpreadsheet->getActiveSheet();
|
||||||
|
foreach ($visibleRows as $row => $visibility) {
|
||||||
|
self::assertSame($visibility, $reloadedWorksheet->getRowDimension($row)->getVisible());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function dataProviderRowVisibility(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
[
|
||||||
|
[1 => false, 2 => false, 3 => true, 4 => false, 5 => true, 6 => false],
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider dataProviderColumnVisibility
|
||||||
|
*/
|
||||||
|
public function testColumnVisibility(array $visibleColumns): void
|
||||||
|
{
|
||||||
|
$spreadsheet = new Spreadsheet();
|
||||||
|
$worksheet = $spreadsheet->getActiveSheet();
|
||||||
|
foreach ($visibleColumns as $column => $visibility) {
|
||||||
|
$worksheet->setCellValue("{$column}1", $column);
|
||||||
|
$worksheet->getColumnDimension($column)->setVisible($visibility);
|
||||||
|
}
|
||||||
|
|
||||||
|
$reloadedSpreadsheet = $this->writeAndReload($spreadsheet, 'Xlsx');
|
||||||
|
$reloadedWorksheet = $reloadedSpreadsheet->getActiveSheet();
|
||||||
|
foreach ($visibleColumns as $column => $visibility) {
|
||||||
|
self::assertSame($visibility, $reloadedWorksheet->getColumnDimension($column)->getVisible());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function dataProviderColumnVisibility(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
[
|
||||||
|
['A' => false, 'B' => false, 'C' => true, 'D' => false, 'E' => true, 'F' => false],
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider dataProviderSheetVisibility
|
||||||
|
*/
|
||||||
|
public function testSheetVisibility(array $visibleSheets): void
|
||||||
|
{
|
||||||
|
$spreadsheet = new Spreadsheet();
|
||||||
|
$spreadsheet->removeSheetByIndex(0);
|
||||||
|
foreach ($visibleSheets as $sheetName => $visibility) {
|
||||||
|
$worksheet = $spreadsheet->addSheet(new Worksheet($spreadsheet, $sheetName));
|
||||||
|
$worksheet->setCellValue('A1', $sheetName);
|
||||||
|
$worksheet->setSheetState($visibility);
|
||||||
|
}
|
||||||
|
|
||||||
|
$reloadedSpreadsheet = $this->writeAndReload($spreadsheet, 'Xlsx');
|
||||||
|
foreach ($visibleSheets as $sheetName => $visibility) {
|
||||||
|
$reloadedWorksheet = $reloadedSpreadsheet->getSheetByName($sheetName) ?? new Worksheet();
|
||||||
|
self::assertSame($visibility, $reloadedWorksheet->getSheetState());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function dataProviderSheetVisibility(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
'Worksheet 1' => Worksheet::SHEETSTATE_HIDDEN,
|
||||||
|
'Worksheet 2' => Worksheet::SHEETSTATE_VERYHIDDEN,
|
||||||
|
'Worksheet 3' => Worksheet::SHEETSTATE_VISIBLE,
|
||||||
|
],
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue