mirror of
https://github.com/retailcrm/PHPExcel.git
synced 2024-11-26 15:26:03 +03:00
Performance improvement for readers that reduces overheads when setting titles in multi-worksheet workbooks, by avoiding re-iterating through all worksheet/cells whenever a sheet title is set
git-svn-id: https://phpexcel.svn.codeplex.com/svn/trunk@83603 2327b42d-5241-43d6-9e2a-de5ac946f064
This commit is contained in:
parent
c345c0e8ca
commit
5fb3ffceb0
@ -571,7 +571,10 @@ class PHPExcel_Reader_Excel2003XML implements PHPExcel_Reader_IReader
|
||||
$objPHPExcel->setActiveSheetIndex($worksheetID);
|
||||
if (isset($worksheet_ss['Name'])) {
|
||||
$worksheetName = self::_convertStringEncoding((string) $worksheet_ss['Name'],$this->_charSet);
|
||||
$objPHPExcel->getActiveSheet()->setTitle($worksheetName);
|
||||
// Use false for $updateFormulaCellReferences to prevent adjustment of worksheet references in
|
||||
// formula cells... during the load, all formulae should be correct, and we're simply bringing
|
||||
// the worksheet name in line with the formula, not the reverse
|
||||
$objPHPExcel->getActiveSheet()->setTitle($worksheetName,false);
|
||||
}
|
||||
|
||||
$columnID = 'A';
|
||||
|
@ -622,7 +622,11 @@ class PHPExcel_Reader_Excel2007 implements PHPExcel_Reader_IReader
|
||||
|
||||
// Load sheet
|
||||
$docSheet = $excel->createSheet();
|
||||
$docSheet->setTitle((string) $eleSheet["name"]);
|
||||
// Use false for $updateFormulaCellReferences to prevent adjustment of worksheet
|
||||
// references in formula cells... during the load, all formulae should be correct,
|
||||
// and we're simply bringing the worksheet name in line with the formula, not the
|
||||
// reverse
|
||||
$docSheet->setTitle((string) $eleSheet["name"],false);
|
||||
$fileWorksheet = $worksheets[(string) self::array_item($eleSheet->attributes("http://schemas.openxmlformats.org/officeDocument/2006/relationships"), "id")];
|
||||
$xmlSheet = simplexml_load_string($this->_getFromZipArchive($zip, "$dir/$fileWorksheet")); //~ http://schemas.openxmlformats.org/spreadsheetml/2006/main");
|
||||
|
||||
|
@ -727,7 +727,10 @@ class PHPExcel_Reader_Excel5 implements PHPExcel_Reader_IReader
|
||||
|
||||
// add sheet to PHPExcel object
|
||||
$this->_phpSheet = $this->_phpExcel->createSheet();
|
||||
$this->_phpSheet->setTitle($sheet['name']);
|
||||
// Use false for $updateFormulaCellReferences to prevent adjustment of worksheet references in formula
|
||||
// cells... during the load, all formulae should be correct, and we're simply bringing the worksheet
|
||||
// name in line with the formula, not the reverse
|
||||
$this->_phpSheet->setTitle($sheet['name'],false);
|
||||
$this->_phpSheet->setSheetState($sheet['sheetState']);
|
||||
|
||||
$this->_pos = $sheet['offset'];
|
||||
|
@ -414,7 +414,10 @@ class PHPExcel_Reader_Gnumeric implements PHPExcel_Reader_IReader
|
||||
// Create new Worksheet
|
||||
$objPHPExcel->createSheet();
|
||||
$objPHPExcel->setActiveSheetIndex($worksheetID);
|
||||
$objPHPExcel->getActiveSheet()->setTitle($worksheetName);
|
||||
// Use false for $updateFormulaCellReferences to prevent adjustment of worksheet references in formula
|
||||
// cells... during the load, all formulae should be correct, and we're simply bringing the worksheet
|
||||
// name in line with the formula, not the reverse
|
||||
$objPHPExcel->getActiveSheet()->setTitle($worksheetName,false);
|
||||
|
||||
if ((!$this->_readDataOnly) && (isset($sheet->PrintInformation))) {
|
||||
if (isset($sheet->PrintInformation->Margins)) {
|
||||
|
@ -396,7 +396,10 @@ class PHPExcel_Reader_OOCalc implements PHPExcel_Reader_IReader
|
||||
$objPHPExcel->setActiveSheetIndex($worksheetID);
|
||||
if (isset($worksheetDataAttributes['name'])) {
|
||||
$worksheetName = (string) $worksheetDataAttributes['name'];
|
||||
$objPHPExcel->getActiveSheet()->setTitle($worksheetName);
|
||||
// Use false for $updateFormulaCellReferences to prevent adjustment of worksheet references in
|
||||
// formula cells... during the load, all formulae should be correct, and we're simply
|
||||
// bringing the worksheet name in line with the formula, not the reverse
|
||||
$objPHPExcel->getActiveSheet()->setTitle($worksheetName,false);
|
||||
}
|
||||
|
||||
$rowID = 1;
|
||||
|
@ -644,9 +644,14 @@ class PHPExcel_Worksheet implements PHPExcel_IComparable
|
||||
* Set title
|
||||
*
|
||||
* @param string $pValue String containing the dimension of this worksheet
|
||||
* @param string $updateFormulaCellReferences boolean Flag indicating whether cell references in formulae should
|
||||
* be updated to reflect the new sheet name.
|
||||
* This should be left as the default true, unless you are
|
||||
* certain that no formula cells on any worksheet contain
|
||||
* references to this worksheet
|
||||
* @return PHPExcel_Worksheet
|
||||
*/
|
||||
public function setTitle($pValue = 'Worksheet')
|
||||
public function setTitle($pValue = 'Worksheet', $updateFormulaCellReferences = true)
|
||||
{
|
||||
// Is this a 'rename' or not?
|
||||
if ($this->getTitle() == $pValue) {
|
||||
@ -690,7 +695,8 @@ class PHPExcel_Worksheet implements PHPExcel_IComparable
|
||||
|
||||
// New title
|
||||
$newTitle = $this->getTitle();
|
||||
PHPExcel_ReferenceHelper::getInstance()->updateNamedFormulas($this->getParent(), $oldTitle, $newTitle);
|
||||
if ($updateFormulaCellReferences)
|
||||
PHPExcel_ReferenceHelper::getInstance()->updateNamedFormulas($this->getParent(), $oldTitle, $newTitle);
|
||||
|
||||
return $this;
|
||||
}
|
||||
@ -2260,7 +2266,6 @@ class PHPExcel_Worksheet implements PHPExcel_IComparable
|
||||
// Identify the range that we need to extract from the worksheet
|
||||
$maxCol = $this->getHighestColumn();
|
||||
$maxRow = $this->getHighestRow();
|
||||
|
||||
// Return
|
||||
return $this->rangeToArray( 'A1:'.$maxCol.$maxRow,
|
||||
$nullValue, $calculateFormulas, $formatData, $returnCellRef);
|
||||
@ -2269,10 +2274,11 @@ class PHPExcel_Worksheet implements PHPExcel_IComparable
|
||||
/**
|
||||
* Get row iterator
|
||||
*
|
||||
* @param integer $startRow The row number at which to start iterating
|
||||
* @return PHPExcel_Worksheet_RowIterator
|
||||
*/
|
||||
public function getRowIterator() {
|
||||
return new PHPExcel_Worksheet_RowIterator($this);
|
||||
public function getRowIterator($startRow = 1) {
|
||||
return new PHPExcel_Worksheet_RowIterator($this,$startRow);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user