Trim whitespace in Worksheet

This commit is contained in:
Alexey Kopytko 2016-06-16 11:31:05 +09:00
parent 2ec40810e8
commit 2cfd980499
1 changed files with 54 additions and 54 deletions

View File

@ -483,7 +483,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
$this->_input_encoding = ''; $this->_input_encoding = '';
$this->_dv = array(); $this->_dv = array();
$this->_tmp_dir = $tmp_dir; $this->_tmp_dir = $tmp_dir;
$this->_tmp_file = ''; $this->_tmp_file = '';
@ -506,7 +506,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
if ($this->_tmp_dir === '' && ini_get('open_basedir') === true) { if ($this->_tmp_dir === '' && ini_get('open_basedir') === true) {
// open_basedir restriction in effect - store data in memory // open_basedir restriction in effect - store data in memory
// ToDo: Let the error actually have an effect somewhere // ToDo: Let the error actually have an effect somewhere
$this->_using_tmpfile = false; $this->_using_tmpfile = false;
return new PEAR_Error('Temp file could not be opened since open_basedir restriction in effect - please use setTmpDir() - using memory storage instead'); return new PEAR_Error('Temp file could not be opened since open_basedir restriction in effect - please use setTmpDir() - using memory storage instead');
} }
@ -791,40 +791,40 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
* @param integer $hidden The optional hidden atribute * @param integer $hidden The optional hidden atribute
* @param integer $level The optional outline level * @param integer $level The optional outline level
*/ */
public function setColumn($firstcol, $lastcol, $width, $format = null, $hidden = 0, $level = 0) public function setColumn($firstcol, $lastcol, $width, $format = null, $hidden = 0, $level = 0)
{ // added by Dan Lynn <dan@spiderweblabs.com) on 2006-12-06 { // added by Dan Lynn <dan@spiderweblabs.com) on 2006-12-06
// look for any ranges this might overlap and remove, size or split where necessary // look for any ranges this might overlap and remove, size or split where necessary
foreach ($this->_colinfo as $key => $colinfo) foreach ($this->_colinfo as $key => $colinfo)
{ {
$existing_start = $colinfo[0]; $existing_end = $colinfo[1]; $existing_start = $colinfo[0]; $existing_end = $colinfo[1];
// if the new range starts within another range // if the new range starts within another range
if ($firstcol > $existing_start && $firstcol < $existing_end) if ($firstcol > $existing_start && $firstcol < $existing_end)
{ // trim the existing range to the beginning of the new range { // trim the existing range to the beginning of the new range
$this->_colinfo[$key][1] = $firstcol - 1; $this->_colinfo[$key][1] = $firstcol - 1;
// if the new range lies WITHIN the existing range // if the new range lies WITHIN the existing range
if ($lastcol < $existing_end) if ($lastcol < $existing_end)
{ // split the existing range by adding a range after our new range { // split the existing range by adding a range after our new range
$this->_colinfo[] = array($lastcol+1, $existing_end, $colinfo[2], &$colinfo[3], $colinfo[4], $colinfo[5]); $this->_colinfo[] = array($lastcol+1, $existing_end, $colinfo[2], &$colinfo[3], $colinfo[4], $colinfo[5]);
} }
} // if the new range ends inside an existing range } // if the new range ends inside an existing range
elseif ($lastcol > $existing_start && $lastcol < $existing_end) elseif ($lastcol > $existing_start && $lastcol < $existing_end)
{ // trim the existing range to the end of the new range { // trim the existing range to the end of the new range
$this->_colinfo[$key][0] = $lastcol + 1; $this->_colinfo[$key][0] = $lastcol + 1;
} // if the new range completely overlaps the existing range } // if the new range completely overlaps the existing range
elseif ($firstcol <= $existing_start && $lastcol >= $existing_end) elseif ($firstcol <= $existing_start && $lastcol >= $existing_end)
{ {
unset($this->_colinfo[$key]); unset($this->_colinfo[$key]);
} }
} // added by Dan Lynn <dan@spiderweblabs.com) on 2006-12-06 } // added by Dan Lynn <dan@spiderweblabs.com) on 2006-12-06
// regenerate keys // regenerate keys
$this->_colinfo = array_values($this->_colinfo); $this->_colinfo = array_values($this->_colinfo);
$this->_colinfo[] = array($firstcol, $lastcol, $width, &$format, $hidden, $level); $this->_colinfo[] = array($firstcol, $lastcol, $width, &$format, $hidden, $level);
// Set width to zero if column is hidden // Set width to zero if column is hidden
$width = ($hidden) ? 0 : $width; $width = ($hidden) ? 0 : $width;
for ($col = $firstcol; $col <= $lastcol; $col++) for ($col = $firstcol; $col <= $lastcol; $col++)
{ {
$this->col_sizes[$col] = $width; $this->col_sizes[$col] = $width;
} }
} }
/** /**
@ -2097,19 +2097,19 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
if (preg_match('[^external:\\\\]', $url)) { if (preg_match('[^external:\\\\]', $url)) {
return; //($this->_writeUrlExternal_net($row1, $col1, $row2, $col2, $url, $str, $format)); return; //($this->_writeUrlExternal_net($row1, $col1, $row2, $col2, $url, $str, $format));
} }
$record = 0x01B8; // Record identifier $record = 0x01B8; // Record identifier
$length = 0x00000; // Bytes to follow $length = 0x00000; // Bytes to follow
if (!$format) { if (!$format) {
$format = $this->_url_format; $format = $this->_url_format;
} }
// Strip URL type and change Unix dir separator to Dos style (if needed) // Strip URL type and change Unix dir separator to Dos style (if needed)
// //
$url = preg_replace('/^external:/', '', $url); $url = preg_replace('/^external:/', '', $url);
$url = preg_replace('/\//', "\\", $url); $url = preg_replace('/\//', "\\", $url);
// Write the visible label // Write the visible label
if ($str == '') { if ($str == '') {
$str = preg_replace('/\#/', ' - ', $url); $str = preg_replace('/\#/', ' - ', $url);
@ -2118,12 +2118,12 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
if (($str_error == -2) or ($str_error == -3)) { if (($str_error == -2) or ($str_error == -3)) {
return $str_error; return $str_error;
} }
// Determine if the link is relative or absolute: // Determine if the link is relative or absolute:
// relative if link contains no dir separator, "somefile.xls" // relative if link contains no dir separator, "somefile.xls"
// relative if link starts with up-dir, "..\..\somefile.xls" // relative if link starts with up-dir, "..\..\somefile.xls"
// otherwise, absolute // otherwise, absolute
$absolute = 0x02; // Bit mask $absolute = 0x02; // Bit mask
if (!preg_match("/\\\/", $url)) { if (!preg_match("/\\\/", $url)) {
$absolute = 0x00; $absolute = 0x00;
@ -2132,7 +2132,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
$absolute = 0x00; $absolute = 0x00;
} }
$link_type = 0x01 | $absolute; $link_type = 0x01 | $absolute;
// Determine if the link contains a sheet reference and change some of the // Determine if the link contains a sheet reference and change some of the
// parameters accordingly. // parameters accordingly.
// Split the dir name and sheet name (if it exists) // Split the dir name and sheet name (if it exists)
@ -2141,7 +2141,7 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
} else { } else {
$dir_long = $url; $dir_long = $url;
} }
if (isset($sheet)) { if (isset($sheet)) {
$link_type |= 0x08; $link_type |= 0x08;
$sheet_len = pack("V", strlen($sheet) + 0x01); $sheet_len = pack("V", strlen($sheet) + 0x01);
@ -2157,32 +2157,32 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
} }
// Pack the link type // Pack the link type
$link_type = pack("V", $link_type); $link_type = pack("V", $link_type);
// Calculate the up-level dir count e.g.. (..\..\..\ == 3) // Calculate the up-level dir count e.g.. (..\..\..\ == 3)
$up_count = preg_match_all("/\.\.\\\/", $dir_long, $useless); $up_count = preg_match_all("/\.\.\\\/", $dir_long, $useless);
$up_count = pack("v", $up_count); $up_count = pack("v", $up_count);
// Store the short dos dir name (null terminated) // Store the short dos dir name (null terminated)
$dir_short = preg_replace("/\.\.\\\/", '', $dir_long) . "\0"; $dir_short = preg_replace("/\.\.\\\/", '', $dir_long) . "\0";
// Store the long dir name as a wchar string (non-null terminated) // Store the long dir name as a wchar string (non-null terminated)
//$dir_long = join("\0", split('', $dir_long)); //$dir_long = join("\0", split('', $dir_long));
$dir_long = $dir_long . "\0"; $dir_long = $dir_long . "\0";
// Pack the lengths of the dir strings // Pack the lengths of the dir strings
$dir_short_len = pack("V", strlen($dir_short) ); $dir_short_len = pack("V", strlen($dir_short) );
$dir_long_len = pack("V", strlen($dir_long) ); $dir_long_len = pack("V", strlen($dir_long) );
$stream_len = pack("V", 0);//strlen($dir_long) + 0x06); $stream_len = pack("V", 0);//strlen($dir_long) + 0x06);
// Pack the undocumented parts of the hyperlink stream // Pack the undocumented parts of the hyperlink stream
$unknown1 = pack("H*",'D0C9EA79F9BACE118C8200AA004BA90B02000000' ); $unknown1 = pack("H*",'D0C9EA79F9BACE118C8200AA004BA90B02000000' );
$unknown2 = pack("H*",'0303000000000000C000000000000046' ); $unknown2 = pack("H*",'0303000000000000C000000000000046' );
$unknown3 = pack("H*",'FFFFADDE000000000000000000000000000000000000000'); $unknown3 = pack("H*",'FFFFADDE000000000000000000000000000000000000000');
$unknown4 = pack("v", 0x03 ); $unknown4 = pack("v", 0x03 );
// Pack the main data stream // Pack the main data stream
$data = pack("vvvv", $row1, $row2, $col1, $col2) . $data = pack("vvvv", $row1, $row2, $col1, $col2) .
$unknown1 . $unknown1 .
@ -2198,11 +2198,11 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
$dir_long . $dir_long .
$sheet_len . $sheet_len .
$sheet ;*/ $sheet ;*/
// Pack the header data // Pack the header data
$length = strlen($data); $length = strlen($data);
$header = pack("vv", $record, $length); $header = pack("vv", $record, $length);
// Write the packed data // Write the packed data
$this->_append($header. $data); $this->_append($header. $data);
return($str_error); return($str_error);
@ -2488,10 +2488,10 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr
$record = 0x00E5; $record = 0x00E5;
foreach($this->_merged_ranges as $ranges) foreach($this->_merged_ranges as $ranges)
{ {
$length = 2 + count($ranges) * 8; $length = 2 + count($ranges) * 8;
$header = pack('vv', $record, $length); $header = pack('vv', $record, $length);
$data = pack('v', count($ranges)); $data = pack('v', count($ranges));
foreach ($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; $string = $header.$data;
$this->_append($string, true); $this->_append($string, true);