Bug #16025 MERGEDCELLS record split by CONTINUE record
git-svn-id: https://svn.php.net/repository/pear/packages/Spreadsheet_Excel_Writer/trunk@320823 c90b9560-bf6c-de11-be94-00142212c4b1
This commit is contained in:
parent
6f5b44cd6b
commit
dadc38fdd6
|
|
@ -343,6 +343,18 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
*/
|
*/
|
||||||
var $_str_table;
|
var $_str_table;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Number of merged cell ranges in actual record
|
||||||
|
* @var int $_merged_cells_counter
|
||||||
|
*/
|
||||||
|
var $_merged_cells_counter = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Number of actual mergedcells record
|
||||||
|
* @var int $_merged_cells_record
|
||||||
|
*/
|
||||||
|
var $_merged_cells_record = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Merged cell ranges
|
* Merged cell ranges
|
||||||
* @var array
|
* @var array
|
||||||
|
|
@ -695,9 +707,18 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
if (($last_row < $first_row) || ($last_col < $first_col)) {
|
if (($last_row < $first_row) || ($last_col < $first_col)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$max_record_ranges = floor(($this->_limit - 6) / 8);
|
||||||
|
if($this->_merged_cells_counter >= $max_record_ranges)
|
||||||
|
{
|
||||||
|
$this->_merged_cells_record++;
|
||||||
|
$this->_merged_cells_counter = 0;
|
||||||
|
}
|
||||||
|
|
||||||
// don't check rowmin, rowmax, etc... because we don't know when this
|
// don't check rowmin, rowmax, etc... because we don't know when this
|
||||||
// is going to be called
|
// is going to be called
|
||||||
$this->_merged_ranges[] = array($first_row, $first_col, $last_row, $last_col);
|
$this->_merged_ranges[$this->_merged_cells_record][] = array($first_row, $first_col, $last_row, $last_col);
|
||||||
|
$this->_merged_cells_counter++;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -2441,14 +2462,16 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$record = 0x00E5;
|
$record = 0x00E5;
|
||||||
$length = 2 + count($this->_merged_ranges) * 8;
|
foreach($this->_merged_ranges as $ranges)
|
||||||
|
{
|
||||||
|
$length = 2 + count($ranges) * 8;
|
||||||
$header = pack('vv', $record, $length);
|
$header = pack('vv', $record, $length);
|
||||||
$data = pack('v', count($this->_merged_ranges));
|
$data = pack('v', count($ranges));
|
||||||
foreach ($this->_merged_ranges as $range) {
|
foreach($ranges as $range)
|
||||||
$data .= pack('vvvv', $range[0], $range[2], $range[1], $range[3]);
|
$data .= pack('vvvv', $range[0], $range[2], $range[1], $range[3]);
|
||||||
|
$string=$header.$data;
|
||||||
|
$this->_append(&$string, true);
|
||||||
}
|
}
|
||||||
$this->_append($header . $data);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue