Minor style tweaks

This commit is contained in:
MarkBaker 2021-05-08 19:57:08 +02:00 committed by Mark Baker
parent 351804335c
commit e71c2e46d0
2 changed files with 20 additions and 18 deletions

View File

@ -12,14 +12,8 @@ use PhpOffice\PhpSpreadsheet\Reader\Security\XmlScanner;
use PhpOffice\PhpSpreadsheet\ReferenceHelper; use PhpOffice\PhpSpreadsheet\ReferenceHelper;
use PhpOffice\PhpSpreadsheet\RichText\RichText; use PhpOffice\PhpSpreadsheet\RichText\RichText;
use PhpOffice\PhpSpreadsheet\Settings; use PhpOffice\PhpSpreadsheet\Settings;
use PhpOffice\PhpSpreadsheet\Shared\Date;
use PhpOffice\PhpSpreadsheet\Shared\File; use PhpOffice\PhpSpreadsheet\Shared\File;
use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Style\Alignment;
use PhpOffice\PhpSpreadsheet\Style\Border;
use PhpOffice\PhpSpreadsheet\Style\Borders;
use PhpOffice\PhpSpreadsheet\Style\Fill;
use PhpOffice\PhpSpreadsheet\Style\Font;
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet; use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
use SimpleXMLElement; use SimpleXMLElement;
use XMLReader; use XMLReader;
@ -349,7 +343,9 @@ class Gnumeric extends BaseReader
$this->spreadsheet->getActiveSheet()->getCell($column . $row)->setValueExplicit((string) $cell, $type); $this->spreadsheet->getActiveSheet()->getCell($column . $row)->setValueExplicit((string) $cell, $type);
} }
(new Styles($this->spreadsheet, $this->readDataOnly))->read($sheet, $maxRow, $maxCol); if ($sheet->Styles !== null) {
(new Styles($this->spreadsheet, $this->readDataOnly))->read($sheet, $maxRow, $maxCol);
}
$this->processComments($sheet); $this->processComments($sheet);
$this->processColumnWidths($sheet, $maxCol); $this->processColumnWidths($sheet, $maxCol);

View File

@ -3,7 +3,6 @@
namespace PhpOffice\PhpSpreadsheet\Reader\Gnumeric; namespace PhpOffice\PhpSpreadsheet\Reader\Gnumeric;
use PhpOffice\PhpSpreadsheet\Cell\Coordinate; use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
use PhpOffice\PhpSpreadsheet\Cell\DataType;
use PhpOffice\PhpSpreadsheet\Shared\Date; use PhpOffice\PhpSpreadsheet\Shared\Date;
use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Style\Alignment; use PhpOffice\PhpSpreadsheet\Style\Alignment;
@ -92,10 +91,17 @@ class Styles
$this->readDataOnly = $readDataOnly; $this->readDataOnly = $readDataOnly;
} }
public function read(?SimpleXMLElement $sheet, $maxRow, $maxCol) public function read(SimpleXMLElement $sheet, int $maxRow, int $maxCol): void
{ {
foreach ($sheet->Styles->StyleRegion as $styleRegion) { if ($sheet->Styles->StyleRegion !== null) {
$styleAttributes = $styleRegion->attributes(); $this->readStyles($sheet->Styles->StyleRegion, $maxRow, $maxCol);
}
}
private function readStyles(SimpleXMLElement $styleRegion, int $maxRow, int $maxCol): void
{
foreach ($styleRegion as $style) {
$styleAttributes = $style->attributes();
if (($styleAttributes['startRow'] <= $maxRow) && ($styleAttributes['startCol'] <= $maxCol)) { if (($styleAttributes['startRow'] <= $maxRow) && ($styleAttributes['startCol'] <= $maxCol)) {
$startColumn = Coordinate::stringFromColumnIndex((int) $styleAttributes['startCol'] + 1); $startColumn = Coordinate::stringFromColumnIndex((int) $styleAttributes['startCol'] + 1);
$startRow = $styleAttributes['startRow'] + 1; $startRow = $styleAttributes['startRow'] + 1;
@ -106,7 +112,7 @@ class Styles
$endRow = 1 + (($styleAttributes['endRow'] > $maxRow) ? $maxRow : (int) $styleAttributes['endRow']); $endRow = 1 + (($styleAttributes['endRow'] > $maxRow) ? $maxRow : (int) $styleAttributes['endRow']);
$cellRange = $startColumn . $startRow . ':' . $endColumn . $endRow; $cellRange = $startColumn . $startRow . ':' . $endColumn . $endRow;
$styleAttributes = $styleRegion->Style->attributes(); $styleAttributes = $style->Style->attributes();
$styleArray = []; $styleArray = [];
// We still set the number format mask for date/time values, even if readDataOnly is true // We still set the number format mask for date/time values, even if readDataOnly is true
@ -127,8 +133,8 @@ class Styles
$this->addColors($styleArray, $styleAttributes); $this->addColors($styleArray, $styleAttributes);
$fontAttributes = $styleRegion->Style->Font->attributes(); $fontAttributes = $style->Style->Font->attributes();
$styleArray['font']['name'] = (string) $styleRegion->Style->Font; $styleArray['font']['name'] = (string) $style->Style->Font;
$styleArray['font']['size'] = (int) ($fontAttributes['Unit']); $styleArray['font']['size'] = (int) ($fontAttributes['Unit']);
$styleArray['font']['bold'] = $fontAttributes['Bold'] == '1'; $styleArray['font']['bold'] = $fontAttributes['Bold'] == '1';
$styleArray['font']['italic'] = $fontAttributes['Italic'] == '1'; $styleArray['font']['italic'] = $fontAttributes['Italic'] == '1';
@ -146,17 +152,17 @@ class Styles
break; break;
} }
if (isset($styleRegion->Style->StyleBorder)) { if (isset($style->Style->StyleBorder)) {
$srssb = $styleRegion->Style->StyleBorder; $srssb = $style->Style->StyleBorder;
$this->addBorderStyle($srssb, $styleArray, 'top'); $this->addBorderStyle($srssb, $styleArray, 'top');
$this->addBorderStyle($srssb, $styleArray, 'bottom'); $this->addBorderStyle($srssb, $styleArray, 'bottom');
$this->addBorderStyle($srssb, $styleArray, 'left'); $this->addBorderStyle($srssb, $styleArray, 'left');
$this->addBorderStyle($srssb, $styleArray, 'right'); $this->addBorderStyle($srssb, $styleArray, 'right');
$this->addBorderDiagonal($srssb, $styleArray); $this->addBorderDiagonal($srssb, $styleArray);
} }
if (isset($styleRegion->Style->HyperLink)) { if (isset($style->Style->HyperLink)) {
// TO DO // TO DO
$hyperlink = $styleRegion->Style->HyperLink->attributes(); $hyperlink = $style->Style->HyperLink->attributes();
} }
} }
$this->spreadsheet->getActiveSheet()->getStyle($cellRange)->applyFromArray($styleArray); $this->spreadsheet->getActiveSheet()->getStyle($cellRange)->applyFromArray($styleArray);