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

Conditionals formatting rules applied to columns are removed #3184

Closed
sdespont opened this issue Nov 17, 2022 · 5 comments
Closed

Conditionals formatting rules applied to columns are removed #3184

sdespont opened this issue Nov 17, 2022 · 5 comments

Comments

@sdespont
Copy link
Contributor

sdespont commented Nov 17, 2022

This is:

- [X] a bug report
- [ ] a feature request
- [ ] **not** a usage question (ask them on https://stackoverflow.com/questions/tagged/phpspreadsheet or https://gitter.im/PHPOffice/PhpSpreadsheet)

What is the expected behavior?

When defining a conditional behavior applied to column, the conditional rules must not be automatically removed by the library.

What is the current behavior?

The conditionals rules applied to columns are removed. All conditionals' rules based on cells number or rows are still existing and working fine.

Template file
image

After using it
image

What are the steps to reproduce?

Create an Excel file, create a conditional rule applied to columns. Load it and insert some cells contents, then save the file. The output file no longer contents the conditional rules applied to columns.

<?php

require __DIR__ . '/vendor/autoload.php';

// Create new Spreadsheet object
$spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();

$spreadsheet = IOFactory::createReader('Xlsx');
$spreadsheet ->setIncludeCharts(true);
$spreadsheet  = $objReader->load($filename);

$spreadsheet  = $phpExcel->getActiveSheet();
$activeSheet->setCellValue('A1', 'ABCDE');

$writer = IOFactory::createWriter($spreadsheet , 'Xlsx');
$writer->save('path);

If this is an issue with reading a specific spreadsheet file, then it may be appropriate to provide a sample file that demonstrates the problem; but please keep it as small as possible, and sanitize any confidential information before uploading.

### What features do you think are causing the issue

- [ ] Reader
- [ ] Writer
- [ ] Styles
- [ ] Data Validations
- [ ] Formula Calculations
- [ ] Charts
- [ ] AutoFilter
- [ ] Form Elements

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


### Which versions of PhpSpreadsheet and PHP are affected?
1.25.2
@MarkBaker
Copy link
Member

MarkBaker commented Nov 17, 2022

Unable to replicate

This is the file that I'm reading:
image

ConditionalFormat_Ranges.xlsx

Before
image

After
image

@sdespont
Copy link
Contributor Author

@MarkBaker Thank you for your tests.

I have spotted the problem, try to execute $activeSheet->insertNewRowBefore(1, 1); before saving. The conditional rules applied to columns will be removed.

@MarkBaker
Copy link
Member

Ah, understood; and I can see why that would cause a problem. Excel doesn't store the rule range as a row or column range (despite what it displays) but as a full cell range like A7:XFD8, and that's how we store it internally. Adding a new column will adjust that range to A7:XFE8, which exceeds Excel's column limit, so it discards the entry as invalid when it's saved and re-loaded. So I need to add some range check logic to the ReferenceHelper code that adjusts the range.

@MarkBaker
Copy link
Member

MarkBaker commented Nov 26, 2022

That PR #3213 should resolve the issue for Xlsx files; but the Xls Writer has different limits; and it also breaks Xls if you have both a row range and a column range for CF ranges in the same worksheet... I've raised a separate Issue #3185 for Xls

@sdespont
Copy link
Contributor Author

Thank you so much ! Xlsx is fine for me, I am not using Xls format for years.

MarkBaker added a commit that referenced this issue Dec 21, 2022
### Added

- Extended flag options for the Reader `load()` and Writer `save()` methods
- Apply Row/Column limits (1048576 and XFD) in ReferenceHelper [PR #3213](#3213)
- Allow the creation of In-Memory Drawings from a string of binary image data, or from a stream. [PR #3157](#3157)
- Xlsx Reader support for Pivot Tables [PR #2829](#2829)
- Permit Date/Time Entered on Spreadsheet to be calculated as Float [Issue #1416](#1416) [PR #3121](#3121)

### Changed

- Nothing

### Deprecated

- Direct update of Calculation::suppressFormulaErrors is replaced with setter.
- Font public static variable defaultColumnWidths replaced with constant DEFAULT_COLUMN_WIDTHS.
- ExcelError public static variable errorCodes replaced with constant ERROR_CODES.
- NumberFormat constant FORMAT_DATE_YYYYMMDD2 replaced with existing identical FORMAT_DATE_YYYYMMDD.

### Removed

- Nothing

### Fixed

- Fixed handling for `_xlws` prefixed functions from Office365 [Issue #3245](#3245) [PR #3247](#3247)
- Conditionals formatting rules applied to rows/columns are removed [Issue #3184](#3184) [PR #3213](#3213)
- Treat strings containing currency or accounting values as floats in Calculation Engine operations [Issue #3165](#3165) [PR #3189](#3189)
- Treat strings containing percentage values as floats in Calculation Engine operations [Issue #3155](#3155) [PR #3156](#3156) and [PR #3164](#3164)
- Xlsx Reader Accept Palette of Fewer than 64 Colors [Issue #3093](#3093) [PR #3096](#3096)
- Use Locale-Independent Float Conversion for Xlsx Writer Custom Property [Issue #3095](#3095) [PR #3099](#3099)
- Allow setting AutoFilter range on a single cell or row [Issue #3102](#3102) [PR #3111](#3111)
- Xlsx Reader External Data Validations Flag Missing [Issue #2677](#2677) [PR #3078](#3078)
- Reduces extra memory usage on `__destruct()` calls [PR #3092](#3092)
- Additional properties for Trendlines [Issue #3011](#3011) [PR #3028](#3028)
- Calculation suppressFormulaErrors fix [Issue #1531](#1531) [PR #3092](#3092)
- Permit Date/Time Entered on Spreadsheet to be Calculated as Float [Issue #1416](#1416) [PR #3121](#3121)
- Incorrect Handling of Data Validation Formula Containing Ampersand [Issue #3145](#3145) [PR #3146](#3146)
- Xlsx Namespace Handling of Drawings, RowAndColumnAttributes, MergeCells [Issue #3138](#3138) [PR #3136](#3137)
- Generation3 Copy With Image in Footer [Issue #3126](#3126) [PR #3140](#3140)
- MATCH Function Problems with Int/Float Compare and Wildcards [Issue #3141](#3141) [PR #3142](#3142)
- Fix ODS Read Filter on number-columns-repeated cell [Issue #3148](#3148) [PR #3149](#3149)
- Problems Formatting Very Small and Very Large Numbers [Issue #3128](#3128) [PR #3152](#3152)
- XlsxWrite preserve line styles for y-axis, not just x-axis [PR #3163](#3163)
- Xlsx Namespace Handling of Drawings, RowAndColumnAttributes, MergeCells [Issue #3138](#3138) [PR #3137](#3137)
- More Detail for Cyclic Error Messages [Issue #3169](#3169) [PR #3170](#3170)
- Improved Documentation for Deprecations - many PRs [Issue #3162](#3162)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

No branches or pull requests

2 participants