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 */
|
||||
private $lastWrittenRowIndex;
|
||||
|
||||
/** @var bool has the sheet data header been written */
|
||||
private $sheetDataStarted = false;
|
||||
|
||||
/**
|
||||
* Worksheet constructor.
|
||||
*
|
||||
@ -36,6 +39,7 @@ class Worksheet
|
||||
$this->externalSheet = $externalSheet;
|
||||
$this->maxNumColumns = 0;
|
||||
$this->lastWrittenRowIndex = 0;
|
||||
$this->sheetDataStarted = false;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -110,4 +114,20 @@ class Worksheet
|
||||
// sheet index is zero-based, while ID is 1-based
|
||||
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
|
||||
* @throws WriterNotOpenedException
|
||||
* @throws WriterAlreadyOpenedException
|
||||
*/
|
||||
public function setDefaultColumnWidth(float $width)
|
||||
{
|
||||
$this->throwIfWorkbookIsNotAvailable();
|
||||
$this->workbookManager->setDefaultColumnWidth($width);
|
||||
$this->throwIfWriterAlreadyOpened('Writer must be configured before opening it.');
|
||||
$this->optionsManager->setOption(
|
||||
Options::DEFAULT_COLUMN_WIDTH,
|
||||
$width
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param float $height
|
||||
* @throws WriterNotOpenedException
|
||||
* @throws WriterAlreadyOpenedException
|
||||
*/
|
||||
public function setDefaultRowHeight(float $height)
|
||||
{
|
||||
$this->throwIfWorkbookIsNotAvailable();
|
||||
$this->workbookManager->setDefaultRowHeight($height);
|
||||
$this->throwIfWriterAlreadyOpened('Writer must be configured before opening it.');
|
||||
$this->optionsManager->setOption(
|
||||
Options::DEFAULT_ROW_HEIGHT,
|
||||
$height
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -65,9 +65,6 @@ EOD;
|
||||
/** @var InternalEntityFactory Factory to create entities */
|
||||
private $entityFactory;
|
||||
|
||||
/** @var bool Whether rows have been written */
|
||||
private $hasWrittenRows = false;
|
||||
|
||||
/**
|
||||
* WorksheetManager constructor.
|
||||
*
|
||||
@ -124,6 +121,22 @@ EOD;
|
||||
\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.
|
||||
*
|
||||
@ -161,13 +174,8 @@ EOD;
|
||||
*/
|
||||
private function addNonEmptyRow(Worksheet $worksheet, Row $row)
|
||||
{
|
||||
$this->ensureSheetDataStated($worksheet);
|
||||
$sheetFilePointer = $worksheet->getFilePointer();
|
||||
if (!$this->hasWrittenRows) {
|
||||
fwrite($sheetFilePointer, $this->getXMLFragmentForDefaultCellSizing());
|
||||
fwrite($sheetFilePointer, $this->getXMLFragmentForColumnWidths());
|
||||
fwrite($sheetFilePointer, '<sheetData>');
|
||||
}
|
||||
|
||||
$rowStyle = $row->getStyle();
|
||||
$rowIndexOneBased = $worksheet->getLastWrittenRowIndex() + 1;
|
||||
$numCells = $row->getNumCells();
|
||||
@ -185,7 +193,6 @@ EOD;
|
||||
if ($wasWriteSuccessful === false) {
|
||||
throw new IOException("Unable to write data in {$worksheet->getFilePath()}");
|
||||
}
|
||||
$this->hasWrittenRows = true;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -323,10 +330,8 @@ EOD;
|
||||
if (!\is_resource($worksheetFilePointer)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($this->hasWrittenRows) {
|
||||
$this->ensureSheetDataStated($worksheet);
|
||||
\fwrite($worksheetFilePointer, '</sheetData>');
|
||||
}
|
||||
\fwrite($worksheetFilePointer, '</worksheet>');
|
||||
\fclose($worksheetFilePointer);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user