edb68ce05c
Editing a Xlsx document using PhpSpreadsheet should preserve the workbook view attributes of that document. For example, if the worksheet tabs are hidden in the original document, they should remain hidden after updating. Fixes #523 Fixes #525
81 lines
3.3 KiB
PHP
81 lines
3.3 KiB
PHP
<?php
|
|
|
|
namespace PhpOffice\PhpSpreadsheetTests\Functional;
|
|
|
|
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
|
|
|
class WorkbookViewAttributesTest extends AbstractFunctional
|
|
{
|
|
public function providerFormats()
|
|
{
|
|
return [
|
|
['Xlsx'],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* Test that workbook bookview attributes such as 'showSheetTabs',
|
|
* (the attribute controlling worksheet tabs visibility,)
|
|
* are preserved when xlsx documents are read and written.
|
|
*
|
|
* @see https://github.com/PHPOffice/PhpSpreadsheet/issues/523
|
|
*
|
|
* @dataProvider providerFormats
|
|
*
|
|
* @param string $format
|
|
*/
|
|
public function testPreserveWorkbookViewAttributes($format)
|
|
{
|
|
// Create a dummy workbook with two worksheets
|
|
$workbook = new Spreadsheet();
|
|
$worksheet1 = $workbook->getActiveSheet();
|
|
$worksheet1->setTitle('Tweedledee');
|
|
$worksheet1->setCellValue('A1', 1);
|
|
$worksheet2 = $workbook->createSheet();
|
|
$worksheet2->setTitle('Tweeldedum');
|
|
$worksheet2->setCellValue('A1', 2);
|
|
|
|
// Check that the bookview attributes return default values
|
|
$this->assertTrue($workbook->getShowHorizontalScroll());
|
|
$this->assertTrue($workbook->getShowVerticalScroll());
|
|
$this->assertTrue($workbook->getShowSheetTabs());
|
|
$this->assertTrue($workbook->getAutoFilterDateGrouping());
|
|
$this->assertFalse($workbook->getMinimized());
|
|
$this->assertSame(0, $workbook->getFirstSheetIndex());
|
|
$this->assertSame(600, $workbook->getTabRatio());
|
|
$this->assertSame(Spreadsheet::VISIBILITY_VISIBLE, $workbook->getVisibility());
|
|
|
|
// Set the bookview attributes to non-default values
|
|
$workbook->setShowHorizontalScroll(false);
|
|
$workbook->setShowVerticalScroll(false);
|
|
$workbook->setShowSheetTabs(false);
|
|
$workbook->setAutoFilterDateGrouping(false);
|
|
$workbook->setMinimized(true);
|
|
$workbook->setFirstSheetIndex(1);
|
|
$workbook->setTabRatio(700);
|
|
$workbook->setVisibility(Spreadsheet::VISIBILITY_HIDDEN);
|
|
|
|
// Check that bookview attributes were set properly
|
|
$this->assertFalse($workbook->getShowHorizontalScroll());
|
|
$this->assertFalse($workbook->getShowVerticalScroll());
|
|
$this->assertFalse($workbook->getShowSheetTabs());
|
|
$this->assertFalse($workbook->getAutoFilterDateGrouping());
|
|
$this->assertTrue($workbook->getMinimized());
|
|
$this->assertSame(1, $workbook->getFirstSheetIndex());
|
|
$this->assertSame(700, $workbook->getTabRatio());
|
|
$this->assertSame(Spreadsheet::VISIBILITY_HIDDEN, $workbook->getVisibility());
|
|
|
|
$workbook2 = $this->writeAndReload($workbook, $format);
|
|
|
|
// Check that the read spreadsheet has the right bookview attributes
|
|
$this->assertFalse($workbook2->getShowHorizontalScroll());
|
|
$this->assertFalse($workbook2->getShowVerticalScroll());
|
|
$this->assertFalse($workbook2->getShowSheetTabs());
|
|
$this->assertFalse($workbook2->getAutoFilterDateGrouping());
|
|
$this->assertTrue($workbook2->getMinimized());
|
|
$this->assertSame(1, $workbook2->getFirstSheetIndex());
|
|
$this->assertSame(700, $workbook2->getTabRatio());
|
|
$this->assertSame(Spreadsheet::VISIBILITY_HIDDEN, $workbook2->getVisibility());
|
|
}
|
|
}
|