Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

XML-Reader: interpret zoom #4002

Closed
SlowFox71 opened this issue Apr 25, 2024 · 0 comments · Fixed by #4003
Closed

XML-Reader: interpret zoom #4002

SlowFox71 opened this issue Apr 25, 2024 · 0 comments · Fixed by #4003

Comments

@SlowFox71
Copy link

SlowFox71 commented Apr 25, 2024

This is:

- [x ] a feature request

What is the expected behavior?

Interpreting <Zoom>50</Zoom> and <ShowPageBreakZoom/>

What is the current behavior?

These elements are ignored

What features do you think are causing the issue

  • [x ] Reader

Does an issue affect all spreadsheet file formats? If not, which formats are affected?

XML only

Unfortunately, I do not have a link to an official documentation of the <WorksheetOptions>, but it accepts <Zoom>{$level}</Zoom> to set the zoom scale and <ShowPageBreakZoom> to show the page break preview. IMO this could easily be done with something like the following code in Xml.php:

if (isset($xmlX->WorksheetOptions->ShowPageBreakZoom)) {
    $spreadsheet->getActiveSheet()->getSheetView()->setView(SheetView::SHEETVIEW_PAGE_BREAK_PREVIEW);
}
if (isset($xmlX->WorksheetOptions->Zoom)) {
    $zoomScaleNormal = (int) $xmlX->WorksheetOptions->Zoom;
    if ($zoomScaleNormal <= 0) {
        // setZoomScaleNormal will throw an Exception if the scale is less than or equals 0
        // that is OK when manually creating documents, but we should be able to read all documents
        $zoomScaleNormal = 100;
    }

    $spreadsheet->getActiveSheet()->getSheetView()->setZoomScaleNormal($zoomScaleNormal);
}
oleibman added a commit to oleibman/PhpSpreadsheet that referenced this issue Apr 27, 2024
Fix PHPOffice#3999. Fix PHPOffice#4000. Fix PHPOffice#4002. Several bug reports and feature requests for Xml Reader arrived practically simultaneously. They are all small and hit the same code modules, so I have bundled them together in one PR.
- `loadSpreadsheetFromString` might try to open a file with a falsy name (like '0'), which results in an exception with a misleading message (or a completely unexpected result if a file with that name exists). Code will still throw an exception, but the message will no longer be misleading, and no file I/O will be attempted.
- function `trySimpleXmlLoadString` is deprecated. It should never have been implemented with public visibility, and the fact that it was made the fix above a little more difficult than it would otherwise have been. It is replaced with a private equivalent.
- Style reader function `parseStyles` will now use a better namespace-aware method of reading its Xml data. Peculiarly, the Xml for the Style elements can either include or not a namespace prefix. This is probably because the global namespace and the styles namespace are the same. The existing prefix-based code does not recognize their equivalence, but the new namespace-based code does. Xml Reader continues to use prefix-based code in several other places.
- Border line styles with Weight omitted or equal to 0 have been treated as no border, but they should be treated as 'hair' thickness.
- Support for Zoom is added to Xml Reader.
- In support of the above, new properties (and getters and setters) zoomScalePageLayoutView and zoomScaleSheetLayoutView are added to Worksheet/SheetView. (As far as I can tell, Excel does not support Sheet Layout View for Xml spreadsheets).
- Support is added for those new properties in Xlsx Reader and Writer.
- Xls Reader and Writer seem to work okay without changes. There is one test where Xls shows a different value for one of the properties than Xml or Xlsx, but the spreadsheet looks okay and I don't see any practical consequences of the difference.
- PageBreak support is added to Xml Reader.
- Code for writing out Column Page Breaks in Xlsx Writer was wrong (and, unsurprisingly, untested). A one-line change fixes it, and tests are added.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging a pull request may close this issue.

1 participant