Minor style tweaks
This commit is contained in:
parent
351804335c
commit
e71c2e46d0
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue