Merge pull request #1 from bizquiz/custom-column-widths
Use options manager for default row height and column width
This commit is contained in:
commit
d065f95bcc
@ -23,6 +23,9 @@ class Worksheet
|
|||||||
/** @var int Index of the last written row */
|
/** @var int Index of the last written row */
|
||||||
private $lastWrittenRowIndex;
|
private $lastWrittenRowIndex;
|
||||||
|
|
||||||
|
/** @var bool has the sheet data header been written */
|
||||||
|
private $sheetDataStarted = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Worksheet constructor.
|
* Worksheet constructor.
|
||||||
*
|
*
|
||||||
@ -36,6 +39,7 @@ class Worksheet
|
|||||||
$this->externalSheet = $externalSheet;
|
$this->externalSheet = $externalSheet;
|
||||||
$this->maxNumColumns = 0;
|
$this->maxNumColumns = 0;
|
||||||
$this->lastWrittenRowIndex = 0;
|
$this->lastWrittenRowIndex = 0;
|
||||||
|
$this->sheetDataStarted = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -110,4 +114,20 @@ class Worksheet
|
|||||||
// sheet index is zero-based, while ID is 1-based
|
// sheet index is zero-based, while ID is 1-based
|
||||||
return $this->externalSheet->getIndex() + 1;
|
return $this->externalSheet->getIndex() + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function getSheetDataStarted()
|
||||||
|
{
|
||||||
|
return $this->sheetDataStarted;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param bool $sheetDataStarted
|
||||||
|
*/
|
||||||
|
public function setSheetDataStarted($sheetDataStarted)
|
||||||
|
{
|
||||||
|
$this->sheetDataStarted = $sheetDataStarted;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -142,22 +142,28 @@ abstract class WriterMultiSheetsAbstract extends WriterAbstract
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param float $width
|
* @param float $width
|
||||||
* @throws WriterNotOpenedException
|
* @throws WriterAlreadyOpenedException
|
||||||
*/
|
*/
|
||||||
public function setDefaultColumnWidth(float $width)
|
public function setDefaultColumnWidth(float $width)
|
||||||
{
|
{
|
||||||
$this->throwIfWorkbookIsNotAvailable();
|
$this->throwIfWriterAlreadyOpened('Writer must be configured before opening it.');
|
||||||
$this->workbookManager->setDefaultColumnWidth($width);
|
$this->optionsManager->setOption(
|
||||||
|
Options::DEFAULT_COLUMN_WIDTH,
|
||||||
|
$width
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param float $height
|
* @param float $height
|
||||||
* @throws WriterNotOpenedException
|
* @throws WriterAlreadyOpenedException
|
||||||
*/
|
*/
|
||||||
public function setDefaultRowHeight(float $height)
|
public function setDefaultRowHeight(float $height)
|
||||||
{
|
{
|
||||||
$this->throwIfWorkbookIsNotAvailable();
|
$this->throwIfWriterAlreadyOpened('Writer must be configured before opening it.');
|
||||||
$this->workbookManager->setDefaultRowHeight($height);
|
$this->optionsManager->setOption(
|
||||||
|
Options::DEFAULT_ROW_HEIGHT,
|
||||||
|
$height
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -65,9 +65,6 @@ EOD;
|
|||||||
/** @var InternalEntityFactory Factory to create entities */
|
/** @var InternalEntityFactory Factory to create entities */
|
||||||
private $entityFactory;
|
private $entityFactory;
|
||||||
|
|
||||||
/** @var bool Whether rows have been written */
|
|
||||||
private $hasWrittenRows = false;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* WorksheetManager constructor.
|
* WorksheetManager constructor.
|
||||||
*
|
*
|
||||||
@ -124,6 +121,22 @@ EOD;
|
|||||||
\fwrite($sheetFilePointer, self::SHEET_XML_FILE_HEADER);
|
\fwrite($sheetFilePointer, self::SHEET_XML_FILE_HEADER);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Writes the sheet data header
|
||||||
|
*
|
||||||
|
* @param Worksheet $worksheet The worksheet to add the row to
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
private function ensureSheetDataStated(Worksheet $worksheet) {
|
||||||
|
if (!$worksheet->getSheetDataStarted()) {
|
||||||
|
$worksheetFilePointer = $worksheet->getFilePointer();
|
||||||
|
\fwrite($worksheetFilePointer, $this->getXMLFragmentForDefaultCellSizing());
|
||||||
|
\fwrite($worksheetFilePointer, $this->getXMLFragmentForColumnWidths());
|
||||||
|
\fwrite($worksheetFilePointer, '<sheetData>');
|
||||||
|
$worksheet->setSheetDataStarted(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks if the sheet has been sucessfully created. Throws an exception if not.
|
* Checks if the sheet has been sucessfully created. Throws an exception if not.
|
||||||
*
|
*
|
||||||
@ -161,13 +174,8 @@ EOD;
|
|||||||
*/
|
*/
|
||||||
private function addNonEmptyRow(Worksheet $worksheet, Row $row)
|
private function addNonEmptyRow(Worksheet $worksheet, Row $row)
|
||||||
{
|
{
|
||||||
|
$this->ensureSheetDataStated($worksheet);
|
||||||
$sheetFilePointer = $worksheet->getFilePointer();
|
$sheetFilePointer = $worksheet->getFilePointer();
|
||||||
if (!$this->hasWrittenRows) {
|
|
||||||
fwrite($sheetFilePointer, $this->getXMLFragmentForDefaultCellSizing());
|
|
||||||
fwrite($sheetFilePointer, $this->getXMLFragmentForColumnWidths());
|
|
||||||
fwrite($sheetFilePointer, '<sheetData>');
|
|
||||||
}
|
|
||||||
|
|
||||||
$rowStyle = $row->getStyle();
|
$rowStyle = $row->getStyle();
|
||||||
$rowIndexOneBased = $worksheet->getLastWrittenRowIndex() + 1;
|
$rowIndexOneBased = $worksheet->getLastWrittenRowIndex() + 1;
|
||||||
$numCells = $row->getNumCells();
|
$numCells = $row->getNumCells();
|
||||||
@ -185,7 +193,6 @@ EOD;
|
|||||||
if ($wasWriteSuccessful === false) {
|
if ($wasWriteSuccessful === false) {
|
||||||
throw new IOException("Unable to write data in {$worksheet->getFilePath()}");
|
throw new IOException("Unable to write data in {$worksheet->getFilePath()}");
|
||||||
}
|
}
|
||||||
$this->hasWrittenRows = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -323,10 +330,8 @@ EOD;
|
|||||||
if (!\is_resource($worksheetFilePointer)) {
|
if (!\is_resource($worksheetFilePointer)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
$this->ensureSheetDataStated($worksheet);
|
||||||
if ($this->hasWrittenRows) {
|
\fwrite($worksheetFilePointer, '</sheetData>');
|
||||||
\fwrite($worksheetFilePointer, '</sheetData>');
|
|
||||||
}
|
|
||||||
\fwrite($worksheetFilePointer, '</worksheet>');
|
\fwrite($worksheetFilePointer, '</worksheet>');
|
||||||
\fclose($worksheetFilePointer);
|
\fclose($worksheetFilePointer);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user