diff --git a/Spreadsheet/Excel/Writer/BIFFwriter.php b/Spreadsheet/Excel/Writer/BIFFwriter.php index 2e129f9..c949b45 100644 --- a/Spreadsheet/Excel/Writer/BIFFwriter.php +++ b/Spreadsheet/Excel/Writer/BIFFwriter.php @@ -90,6 +90,12 @@ class Spreadsheet_Excel_Writer_BIFFwriter extends PEAR */ var $_tmp_dir; + /** + * The temporary file for storing the OLE file + * @var string + */ + var $_tmp_file; + /** * Constructor * diff --git a/Spreadsheet/Excel/Writer/Worksheet.php b/Spreadsheet/Excel/Writer/Worksheet.php index 9fe3dfe..1bf7581 100644 --- a/Spreadsheet/Excel/Writer/Worksheet.php +++ b/Spreadsheet/Excel/Writer/Worksheet.php @@ -463,7 +463,8 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr $this->_dv = array(); - $this->_tmp_dir = $tmp_dir; + $this->_tmp_dir = $tmp_dir; + $this->_tmp_file = ''; $this->_initialize(); } @@ -493,8 +494,8 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr $fh = tmpfile(); } else { // For people with open base dir restriction - $tmpfilename = tempnam($this->_tmp_dir, "Spreadsheet_Excel_Writer"); - $fh = @fopen($tmpfilename, "w+b"); + $this->_tmp_file = tempnam($this->_tmp_dir, "Spreadsheet_Excel_Writer"); + $fh = @fopen($this->_tmp_file, "w+b"); } if ($fh === false) { @@ -625,6 +626,16 @@ class Spreadsheet_Excel_Writer_Worksheet extends Spreadsheet_Excel_Writer_BIFFwr $this->_storeDataValidity(); }*/ $this->_storeEof(); + + if ( $this->_tmp_file != '' ) { + if ( $this->_filehandle ) { + fclose($this->_filehandle); + $this->_filehandle = ''; + } + @unlink($this->_tmp_file); + $this->_tmp_file = ''; + $this->_using_tmpfile = true; + } } /**