File tree Expand file tree Collapse file tree 4 files changed +51
-2
lines changed
src/PhpSpreadsheet/Reader
tests/PhpSpreadsheetTests/Functional Expand file tree Collapse file tree 4 files changed +51
-2
lines changed Original file line number Diff line number Diff line change @@ -17,6 +17,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
1717- Avoid potentially unsupported PSR-16 cache keys - [ #354 ] ( https://github.com/PHPOffice/PhpSpreadsheet/issues/354 )
1818- Check for MIME type to know if CSV reader can read a file - [ #167 ] ( https://github.com/PHPOffice/PhpSpreadsheet/issues/167 )
1919- Use proper € symbol for currency format - [ #379 ] ( https://github.com/PHPOffice/PhpSpreadsheet/pull/379 )
20+ - Read printing area correctly when skipping some sheets - [ #371 ] ( https://github.com/PHPOffice/PhpSpreadsheet/issues/371 )
2021
2122## [ 1.1.0] - 2018-01-28
2223
Original file line number Diff line number Diff line change @@ -1700,7 +1700,7 @@ public function load($pFilename)
17001700 }
17011701
17021702 // Some definedNames are only applicable if we are on the same sheet...
1703- if ((string ) $ definedName ['localSheetId ' ] != '' && (string ) $ definedName ['localSheetId ' ] == $ sheetId ) {
1703+ if ((string ) $ definedName ['localSheetId ' ] != '' && (string ) $ definedName ['localSheetId ' ] == $ oldSheetId ) {
17041704 // Switch on type
17051705 switch ((string ) $ definedName ['name ' ]) {
17061706 case '_xlnm._FilterDatabase ' :
Original file line number Diff line number Diff line change @@ -17,16 +17,20 @@ abstract class AbstractFunctional extends TestCase
1717 *
1818 * @param Spreadsheet $spreadsheet
1919 * @param string $format
20+ * @param null|callable $readerCustomizer
2021 *
2122 * @return Spreadsheet
2223 */
23- protected function writeAndReload (Spreadsheet $ spreadsheet , $ format )
24+ protected function writeAndReload (Spreadsheet $ spreadsheet , $ format, callable $ readerCustomizer = null )
2425 {
2526 $ filename = tempnam (File::sysGetTempDir (), 'phpspreadsheet-test ' );
2627 $ writer = IOFactory::createWriter ($ spreadsheet , $ format );
2728 $ writer ->save ($ filename );
2829
2930 $ reader = IOFactory::createReader ($ format );
31+ if ($ readerCustomizer ) {
32+ $ readerCustomizer ($ reader );
33+ }
3034 $ reloadedSpreadsheet = $ reader ->load ($ filename );
3135 unlink ($ filename );
3236
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ namespace PhpOffice \PhpSpreadsheetTests \Functional ;
4+
5+ use PhpOffice \PhpSpreadsheet \Reader \BaseReader ;
6+ use PhpOffice \PhpSpreadsheet \Spreadsheet ;
7+
8+ class PrintAreaTest extends AbstractFunctional
9+ {
10+ public function providerFormats ()
11+ {
12+ return [
13+ ['Xls ' ],
14+ ['Xlsx ' ],
15+ ];
16+ }
17+
18+ /**
19+ * @dataProvider providerFormats
20+ *
21+ * @param string $format
22+ */
23+ public function testPageSetup ($ format )
24+ {
25+ // Create new workbook with 3 sheets and different print areas
26+ $ spreadsheet = new Spreadsheet ();
27+ $ worksheet1 = $ spreadsheet ->getActiveSheet ()->setTitle ('Sheet 1 ' );
28+ $ worksheet1 ->getPageSetup ()->setPrintArea ('A1:B1 ' );
29+
30+ for ($ i = 2 ; $ i < 4 ; ++$ i ) {
31+ $ sheet = $ spreadsheet ->createSheet ()->setTitle ("Sheet $ i " );
32+ $ sheet ->getPageSetup ()->setPrintArea ("A $ i:B $ i " );
33+ }
34+
35+ $ reloadedSpreadsheet = $ this ->writeAndReload ($ spreadsheet , $ format , function (BaseReader $ reader ) {
36+ $ reader ->setLoadSheetsOnly (['Sheet 1 ' , 'Sheet 3 ' ]);
37+ });
38+
39+ $ actual1 = $ reloadedSpreadsheet ->getSheetByName ('Sheet 1 ' )->getPageSetup ()->getPrintArea ();
40+ $ actual3 = $ reloadedSpreadsheet ->getSheetByName ('Sheet 3 ' )->getPageSetup ()->getPrintArea ();
41+ self ::assertSame ('A1:B1 ' , $ actual1 , 'should be able to write and read normal page setup ' );
42+ self ::assertSame ('A3:B3 ' , $ actual3 , 'should be able to write and read page setup even when skipping sheets ' );
43+ }
44+ }
You can’t perform that action at this time.
0 commit comments