Bugfix: The freezePaneByColumnAndRow() method row argument should default to 1 rather than 0. Default row argument for all __ByColumnAndRow() methods should be 1
General: Enhanced SheetViews element structures in the Excel2007 Writer for frozen panes. git-svn-id: https://phpexcel.svn.codeplex.com/svn/trunk@68124 2327b42d-5241-43d6-9e2a-de5ac946f064
This commit is contained in:
parent
3757a0e6ff
commit
919df79991
|
@ -875,7 +875,7 @@ class PHPExcel_Worksheet implements PHPExcel_IComparable
|
|||
* @param bool $returnCell Return the worksheet (false, default) or the cell (true)
|
||||
* @return PHPExcel_Worksheet|PHPExcel_Cell Depending on the last parameter being specified
|
||||
*/
|
||||
public function setCellValueByColumnAndRow($pColumn = 0, $pRow = 0, $pValue = null, $returnCell = false)
|
||||
public function setCellValueByColumnAndRow($pColumn = 0, $pRow = 1, $pValue = null, $returnCell = false)
|
||||
{
|
||||
$cell = $this->getCell(PHPExcel_Cell::stringFromColumnIndex($pColumn) . $pRow);
|
||||
$cell->setValue($pValue);
|
||||
|
@ -910,7 +910,7 @@ class PHPExcel_Worksheet implements PHPExcel_IComparable
|
|||
* @param string $pDataType Explicit data type
|
||||
* @return PHPExcel_Worksheet
|
||||
*/
|
||||
public function setCellValueExplicitByColumnAndRow($pColumn = 0, $pRow = 0, $pValue = null, $pDataType = PHPExcel_Cell_DataType::TYPE_STRING)
|
||||
public function setCellValueExplicitByColumnAndRow($pColumn = 0, $pRow = 1, $pValue = null, $pDataType = PHPExcel_Cell_DataType::TYPE_STRING)
|
||||
{
|
||||
return $this->getCell(PHPExcel_Cell::stringFromColumnIndex($pColumn) . $pRow)->setValueExplicit($pValue, $pDataType);
|
||||
}
|
||||
|
@ -992,7 +992,7 @@ class PHPExcel_Worksheet implements PHPExcel_IComparable
|
|||
* @param string $pRow Numeric row coordinate of the cell
|
||||
* @return PHPExcel_Cell Cell that was found
|
||||
*/
|
||||
public function getCellByColumnAndRow($pColumn = 0, $pRow = 0)
|
||||
public function getCellByColumnAndRow($pColumn = 0, $pRow = 1)
|
||||
{
|
||||
$columnLetter = PHPExcel_Cell::stringFromColumnIndex($pColumn);
|
||||
$coordinate = $columnLetter . $pRow;
|
||||
|
@ -1066,7 +1066,7 @@ class PHPExcel_Worksheet implements PHPExcel_IComparable
|
|||
* @param string $pRow Numeric row coordinate of the cell
|
||||
* @return boolean
|
||||
*/
|
||||
public function cellExistsByColumnAndRow($pColumn = 0, $pRow = 0)
|
||||
public function cellExistsByColumnAndRow($pColumn = 0, $pRow = 1)
|
||||
{
|
||||
return $this->cellExists(PHPExcel_Cell::stringFromColumnIndex($pColumn) . $pRow);
|
||||
}
|
||||
|
@ -1077,7 +1077,7 @@ class PHPExcel_Worksheet implements PHPExcel_IComparable
|
|||
* @param int $pRow Numeric index of the row
|
||||
* @return PHPExcel_Worksheet_RowDimension
|
||||
*/
|
||||
public function getRowDimension($pRow = 0)
|
||||
public function getRowDimension($pRow = 1)
|
||||
{
|
||||
// Found
|
||||
$found = null;
|
||||
|
@ -1253,7 +1253,7 @@ class PHPExcel_Worksheet implements PHPExcel_IComparable
|
|||
* @param int $pRow Numeric row coordinate of the cell
|
||||
* @return PHPExcel_Style
|
||||
*/
|
||||
public function getStyleByColumnAndRow($pColumn = 0, $pRow = 0)
|
||||
public function getStyleByColumnAndRow($pColumn = 0, $pRow = 1)
|
||||
{
|
||||
return $this->getStyle(PHPExcel_Cell::stringFromColumnIndex($pColumn) . $pRow);
|
||||
}
|
||||
|
@ -1384,13 +1384,13 @@ class PHPExcel_Worksheet implements PHPExcel_IComparable
|
|||
/**
|
||||
* Set break on a cell by using numeric cell coordinates
|
||||
*
|
||||
* @param int $pColumn Numeric column coordinate of the cell
|
||||
* @param int $pRow Numeric row coordinate of the cell
|
||||
* @param int $pBreak Break type (type of PHPExcel_Worksheet::BREAK_*)
|
||||
* @param integer $pColumn Numeric column coordinate of the cell
|
||||
* @param integer $pRow Numeric row coordinate of the cell
|
||||
* @param integer $pBreak Break type (type of PHPExcel_Worksheet::BREAK_*)
|
||||
* @throws Exception
|
||||
* @return PHPExcel_Worksheet
|
||||
*/
|
||||
public function setBreakByColumnAndRow($pColumn = 0, $pRow = 0, $pBreak = PHPExcel_Worksheet::BREAK_NONE)
|
||||
public function setBreakByColumnAndRow($pColumn = 0, $pRow = 1, $pBreak = PHPExcel_Worksheet::BREAK_NONE)
|
||||
{
|
||||
return $this->setBreak(PHPExcel_Cell::stringFromColumnIndex($pColumn) . $pRow, $pBreak);
|
||||
}
|
||||
|
@ -1454,7 +1454,7 @@ class PHPExcel_Worksheet implements PHPExcel_IComparable
|
|||
* @throws Exception
|
||||
* @return PHPExcel_Worksheet
|
||||
*/
|
||||
public function mergeCellsByColumnAndRow($pColumn1 = 0, $pRow1 = 0, $pColumn2 = 0, $pRow2 = 0)
|
||||
public function mergeCellsByColumnAndRow($pColumn1 = 0, $pRow1 = 1, $pColumn2 = 0, $pRow2 = 1)
|
||||
{
|
||||
$cellRange = PHPExcel_Cell::stringFromColumnIndex($pColumn1) . $pRow1 . ':' . PHPExcel_Cell::stringFromColumnIndex($pColumn2) . $pRow2;
|
||||
return $this->mergeCells($cellRange);
|
||||
|
@ -1495,7 +1495,7 @@ class PHPExcel_Worksheet implements PHPExcel_IComparable
|
|||
* @throws Exception
|
||||
* @return PHPExcel_Worksheet
|
||||
*/
|
||||
public function unmergeCellsByColumnAndRow($pColumn1 = 0, $pRow1 = 0, $pColumn2 = 0, $pRow2 = 0)
|
||||
public function unmergeCellsByColumnAndRow($pColumn1 = 0, $pRow1 = 1, $pColumn2 = 0, $pRow2 = 1)
|
||||
{
|
||||
$cellRange = PHPExcel_Cell::stringFromColumnIndex($pColumn1) . $pRow1 . ':' . PHPExcel_Cell::stringFromColumnIndex($pColumn2) . $pRow2;
|
||||
return $this->unmergeCells($cellRange);
|
||||
|
@ -1558,7 +1558,7 @@ class PHPExcel_Worksheet implements PHPExcel_IComparable
|
|||
* @throws Exception
|
||||
* @return PHPExcel_Worksheet
|
||||
*/
|
||||
public function protectCellsByColumnAndRow($pColumn1 = 0, $pRow1 = 0, $pColumn2 = 0, $pRow2 = 0, $pPassword = '', $pAlreadyHashed = false)
|
||||
public function protectCellsByColumnAndRow($pColumn1 = 0, $pRow1 = 1, $pColumn2 = 0, $pRow2 = 1, $pPassword = '', $pAlreadyHashed = false)
|
||||
{
|
||||
$cellRange = PHPExcel_Cell::stringFromColumnIndex($pColumn1) . $pRow1 . ':' . PHPExcel_Cell::stringFromColumnIndex($pColumn2) . $pRow2;
|
||||
return $this->protectCells($cellRange, $pPassword, $pAlreadyHashed);
|
||||
|
@ -1596,7 +1596,7 @@ class PHPExcel_Worksheet implements PHPExcel_IComparable
|
|||
* @throws Exception
|
||||
* @return PHPExcel_Worksheet
|
||||
*/
|
||||
public function unprotectCellsByColumnAndRow($pColumn1 = 0, $pRow1 = 0, $pColumn2 = 0, $pRow2 = 0, $pPassword = '', $pAlreadyHashed = false)
|
||||
public function unprotectCellsByColumnAndRow($pColumn1 = 0, $pRow1 = 1, $pColumn2 = 0, $pRow2 = 1, $pPassword = '', $pAlreadyHashed = false)
|
||||
{
|
||||
$cellRange = PHPExcel_Cell::stringFromColumnIndex($pColumn1) . $pRow1 . ':' . PHPExcel_Cell::stringFromColumnIndex($pColumn2) . $pRow2;
|
||||
return $this->unprotectCells($cellRange, $pPassword, $pAlreadyHashed);
|
||||
|
@ -1653,7 +1653,7 @@ class PHPExcel_Worksheet implements PHPExcel_IComparable
|
|||
* @throws Exception
|
||||
* @return PHPExcel_Worksheet
|
||||
*/
|
||||
public function setAutoFilterByColumnAndRow($pColumn1 = 0, $pRow1 = 0, $pColumn2 = 0, $pRow2 = 0)
|
||||
public function setAutoFilterByColumnAndRow($pColumn1 = 0, $pRow1 = 1, $pColumn2 = 0, $pRow2 = 1)
|
||||
{
|
||||
return $this->setAutoFilter(
|
||||
PHPExcel_Cell::stringFromColumnIndex($pColumn1) . $pRow1
|
||||
|
@ -1711,7 +1711,7 @@ class PHPExcel_Worksheet implements PHPExcel_IComparable
|
|||
* @throws Exception
|
||||
* @return PHPExcel_Worksheet
|
||||
*/
|
||||
public function freezePaneByColumnAndRow($pColumn = 0, $pRow = 0)
|
||||
public function freezePaneByColumnAndRow($pColumn = 0, $pRow = 1)
|
||||
{
|
||||
return $this->freezePane(PHPExcel_Cell::stringFromColumnIndex($pColumn) . $pRow);
|
||||
}
|
||||
|
@ -1979,7 +1979,7 @@ class PHPExcel_Worksheet implements PHPExcel_IComparable
|
|||
* @param int $pRow Numeric row coordinate of the cell
|
||||
* @return PHPExcel_Comment
|
||||
*/
|
||||
public function getCommentByColumnAndRow($pColumn = 0, $pRow = 0)
|
||||
public function getCommentByColumnAndRow($pColumn = 0, $pRow = 1)
|
||||
{
|
||||
return $this->getComment(PHPExcel_Cell::stringFromColumnIndex($pColumn) . $pRow);
|
||||
}
|
||||
|
@ -2068,7 +2068,7 @@ class PHPExcel_Worksheet implements PHPExcel_IComparable
|
|||
* @throws Exception
|
||||
* @return PHPExcel_Worksheet
|
||||
*/
|
||||
public function setSelectedCellByColumnAndRow($pColumn = 0, $pRow = 0)
|
||||
public function setSelectedCellByColumnAndRow($pColumn = 0, $pRow = 1)
|
||||
{
|
||||
return $this->setSelectedCells(PHPExcel_Cell::stringFromColumnIndex($pColumn) . $pRow);
|
||||
}
|
||||
|
|
|
@ -236,31 +236,50 @@ class PHPExcel_Writer_Excel2007_Worksheet extends PHPExcel_Writer_Excel2007_Writ
|
|||
$objWriter->writeAttribute('rightToLeft', 'true');
|
||||
}
|
||||
|
||||
// Pane
|
||||
if ($pSheet->getFreezePane() != '') {
|
||||
// Calculate freeze coordinates
|
||||
$xSplit = 0;
|
||||
$ySplit = 0;
|
||||
$topLeftCell = $pSheet->getFreezePane();
|
||||
$activeCell = $pSheet->getActiveCell();
|
||||
|
||||
list($xSplit, $ySplit) = PHPExcel_Cell::coordinateFromString($pSheet->getFreezePane());
|
||||
// Pane
|
||||
$pane = '';
|
||||
$topLeftCell = $pSheet->getFreezePane();
|
||||
if (($topLeftCell != '') && ($topLeftCell != 'A1')) {
|
||||
$activeCell = $topLeftCell;
|
||||
// Calculate freeze coordinates
|
||||
$xSplit = $ySplit = 0;
|
||||
|
||||
list($xSplit, $ySplit) = PHPExcel_Cell::coordinateFromString($topLeftCell);
|
||||
$xSplit = PHPExcel_Cell::columnIndexFromString($xSplit);
|
||||
|
||||
// pane
|
||||
$pane = 'topRight';
|
||||
$objWriter->startElement('pane');
|
||||
if ($xSplit > 1)
|
||||
$objWriter->writeAttribute('xSplit', $xSplit - 1);
|
||||
if ($ySplit > 1) {
|
||||
$objWriter->writeAttribute('ySplit', $ySplit - 1);
|
||||
$pane = ($xSplit > 1) ? 'bottomRight' : 'bottomLeft';
|
||||
}
|
||||
$objWriter->writeAttribute('topLeftCell', $topLeftCell);
|
||||
$objWriter->writeAttribute('activePane', 'bottomRight');
|
||||
$objWriter->writeAttribute('activePane', $pane);
|
||||
$objWriter->writeAttribute('state', 'frozen');
|
||||
$objWriter->endElement();
|
||||
|
||||
if (($xSplit > 1) && ($ySplit > 1)) {
|
||||
// Write additional selections if more than two panes (ie both an X and a Y split)
|
||||
$objWriter->startElement('selection'); $objWriter->writeAttribute('pane', 'topRight'); $objWriter->endElement();
|
||||
$objWriter->startElement('selection'); $objWriter->writeAttribute('pane', 'bottomLeft'); $objWriter->endElement();
|
||||
}
|
||||
}
|
||||
|
||||
// Selection
|
||||
if ($pane != '') {
|
||||
// Only need to write selection element if we have a split pane
|
||||
// We cheat a little by over-riding the active cell selection, setting it to the split cell
|
||||
$objWriter->startElement('selection');
|
||||
$objWriter->writeAttribute('activeCell', $pSheet->getActiveCell());
|
||||
$objWriter->writeAttribute('sqref', $pSheet->getSelectedCells());
|
||||
$objWriter->writeAttribute('pane', $pane);
|
||||
$objWriter->writeAttribute('activeCell', $activeCell);
|
||||
$objWriter->writeAttribute('sqref', $activeCell);
|
||||
$objWriter->endElement();
|
||||
}
|
||||
|
||||
$objWriter->endElement();
|
||||
|
||||
|
|
|
@ -54,7 +54,10 @@ Fixed in SVN:
|
|||
- Bugfix: (MBaker) Work item 14980 - Images not getting copyied with the ->clone function
|
||||
- Bugfix: (MBaker) Work item 11576 - AdvancedValueBinder.php: String sometimes becomes a date when it shouldn't
|
||||
- Bugfix: (MBaker) Fix Excel5 Writer so that it only writes column dimensions for columns that are actually used rather than the full range (A to IV)
|
||||
- Bugfix: (MBaker) The freezePaneByColumnAndRow() method row argument should default to 1 rather than 0.
|
||||
Default row argument for all __ByColumnAndRow() methods should be 1
|
||||
- General: (MBaker) Improved performance (speed), for building the Shared Strings table in the Excel2007 Writer.
|
||||
- General: (MBaker) Enhanced SheetViews element structures in the Excel2007 Writer for frozen panes.
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue