Skip to content

Commit

Permalink
Remove byColumnAndRow Examples From Documentation (#3816)
Browse files Browse the repository at this point in the history
* Remove byColumnAndRow Examples From Documentation

Responding to #2706 (comment).

* Migration From PHPExcel - Charts

Updated section to recommend use of mitoteam/jpgraph.

* Update accessing-cells.md

Remove 'by coordinate' from headings.
  • Loading branch information
oleibman authored Dec 9, 2023
1 parent 29c0162 commit 02a6513
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 56 deletions.
48 changes: 10 additions & 38 deletions docs/topics/accessing-cells.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,24 @@

Accessing cells in a Spreadsheet should be pretty straightforward. This
topic lists some of the options to access a cell.
For all of these, the cell can be accessed by coordinate (e.g. `B3`),
by an array of column index (where A is 1) and row (e.g. `[2, 3]`),
or as a CellAddress object (e.g. `new CellAddress('B3', /* optional */ $worksheet)`.

## Setting a cell value by coordinate
## Setting a cell value

Setting a cell value by coordinate can be done using the worksheet's
Setting a cell value can be done using the worksheet's
`setCellValue()` method.

```php
// Set cell A1 with a string value
$spreadsheet->getActiveSheet()->setCellValue('A1', 'PhpSpreadsheet');

// Set cell A2 with a numeric value
$spreadsheet->getActiveSheet()->setCellValue('A2', 12345.6789);
$spreadsheet->getActiveSheet()->setCellValue([1, 2], 12345.6789);

// Set cell A3 with a boolean value
$spreadsheet->getActiveSheet()->setCellValue('A3', TRUE);
$spreadsheet->getActiveSheet()->setCellValue(new CellAddress('A3'), TRUE);

// Set cell A4 with a formula
$spreadsheet->getActiveSheet()->setCellValue(
Expand Down Expand Up @@ -318,7 +321,7 @@ $spreadsheet->getActiveSheet()

![07-simple-example-4.png](./images/07-simple-example-4.png)

## Retrieving a cell value by coordinate
## Retrieving a cell value

To retrieve the value of a cell, the cell should first be retrieved from
the worksheet using the `getCell()` method. A cell's value can be read
Expand Down Expand Up @@ -350,37 +353,6 @@ the cell's `getFormattedValue()` method.
$cellValue = $spreadsheet->getActiveSheet()->getCell('A6')->getFormattedValue();
```

## Setting a cell value by column and row

Setting a cell value by coordinate can be done using the worksheet's
`setCellValueByColumnAndRow()` method.

```php
// Set cell A5 with a string value
$spreadsheet->getActiveSheet()->setCellValueByColumnAndRow(1, 5, 'PhpSpreadsheet');
```

**Note:** that column references start with `1` for column `A`.

## Retrieving a cell value by column and row

To retrieve the value of a cell, the cell should first be retrieved from
the worksheet using the `getCellByColumnAndRow()` method. A cell’s value can
be read again using the following line of code:

```php
// Get the value from cell B5
$cellValue = $spreadsheet->getActiveSheet()->getCellByColumnAndRow(2, 5)->getValue();
```

If you need the calculated value of a cell, use the following code. This
is further explained in [the calculation engine](./calculation-engine.md).

```php
// Get the value from cell A4
$cellValue = $spreadsheet->getActiveSheet()->getCellByColumnAndRow(1, 4)->getCalculatedValue();
```

## Retrieving a range of cell values to an array

It is also possible to retrieve a range of cell values to an array in a
Expand Down Expand Up @@ -487,7 +459,7 @@ echo '<table>' . "\n";
for ($row = 1; $row <= $highestRow; ++$row) {
echo '<tr>' . PHP_EOL;
for ($col = 1; $col <= $highestColumnIndex; ++$col) {
$value = $worksheet->getCellByColumnAndRow($col, $row)->getValue();
$value = $worksheet->getCell([$col, $row])->getValue();
echo '<td>' . $value . '</td>' . PHP_EOL;
}
echo '</tr>' . PHP_EOL;
Expand All @@ -508,7 +480,7 @@ $worksheet = $spreadsheet->getActiveSheet();
$highestRow = $worksheet->getHighestDataRow(); // e.g. 10
$highestColumn = $worksheet->getHighestDataColumn(); // e.g 'F'
// Increment the highest column letter
$highestColumn++;
++$highestColumn;

echo '<table>' . "\n";
for ($row = 1; $row <= $highestRow; ++$row) {
Expand Down
40 changes: 22 additions & 18 deletions docs/topics/migration-from-PHPExcel.md
Original file line number Diff line number Diff line change
Expand Up @@ -222,14 +222,18 @@ $writer = new \PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf($spreadsheet);

### Rendering charts

When rendering charts for HTML or PDF outputs, the process was also simplified. And while
JpGraph support is still available, it is unfortunately not up to date for latest PHP versions
and it will generate various warnings.

If you rely on this feature, please consider
contributing either patches to JpGraph or another `IRenderer` implementation (a good
When rendering charts for HTML or PDF outputs, the process was simplified.
And, while JpGraph support is still available,
the version distributed via Composer is no longer maintained,
so you would need to install the current version manually.
If you rely on this package, please consider
contributing patches either to JpGraph or another `IRenderer` implementation (a good
candidate might be [CpChart](https://github.com/szymach/c-pchart)).

The package [mitoteam/jpgraph](https://github.com/mitoteam/jpgraph)
is distributed via Composer, and is fully compatible with Jpgraph.
We recommend that it be used for rendering.

Before:

```php
Expand All @@ -245,13 +249,13 @@ After:
Require the dependency via composer:

```sh
composer require jpgraph/jpgraph
composer require mitoteam/jpgraph
```

And then:

```php
Settings::setChartRenderer(\PhpOffice\PhpSpreadsheet\Chart\Renderer\JpGraph::class);
Settings::setChartRenderer(\PhpOffice\PhpSpreadsheet\Chart\Renderer\MtJpGraphRenderer::class);
```

### PclZip and ZipArchive
Expand Down Expand Up @@ -294,13 +298,13 @@ Refer to [the new documentation](./memory_saving.md) to see how to migrate.

### Dropped conditionally returned cell

For all the following methods, it is no more possible to change the type of
returned value. It always return the Worksheet and never the Cell or Rule:
For all the following methods, it is not possible to change the type of
returned value. They will always return the Worksheet and never the Cell or Rule:

- Worksheet::setCellValue()
- Worksheet::setCellValueByColumnAndRow()
- Worksheet::setCellValueByColumnAndRow() (*deprecated*)
- Worksheet::setCellValueExplicit()
- Worksheet::setCellValueExplicitByColumnAndRow()
- Worksheet::setCellValueExplicitByColumnAndRow() (*deprecated*)
- Worksheet::addRule()

Migration would be similar to:
Expand Down Expand Up @@ -412,19 +416,19 @@ So the code must be adapted with something like:
// Before
$cell = $worksheet->getCellByColumnAndRow($column, $row);

for ($column = 0; $column < $max; $column++) {
$worksheet->setCellValueByColumnAndRow($column, $row, 'value ' . $column);
for ($column = 0; $column < $max; ++$column) {
$worksheet->setCellValueByColumnAndRow($column, $row, 'value');
}

// After
$cell = $worksheet->getCellByColumnAndRow($column + 1, $row);
$cell = $worksheet->getCell([$column + 1, $row]);

for ($column = 1; $column <= $max; $column++) {
$worksheet->setCellValueByColumnAndRow($column, $row, 'value ' . $column);
for ($column = 1; $column <= $max; ++$column) {
$worksheet->setCellValue([$column, $row], 'value');
}
```

All the following methods are affected:
All the following methods are affected, and all are now deprecated (see example above for how to replace them):

- `PHPExcel_Worksheet::cellExistsByColumnAndRow()`
- `PHPExcel_Worksheet::freezePaneByColumnAndRow()`
Expand Down

0 comments on commit 02a6513

Please sign in to comment.