Copy sheets without image

Topics: Developer Forum, Project Management Forum, User Forum
Jul 21, 2009 at 4:31 PM
Edited Jul 21, 2009 at 4:36 PM


I need to copy a sheet from a Workbook i load before. So i use the function "copy".

It worked but not really correctly.

1) When i open the file generated, i have an error like my data are probably lost.

2) All image of my workbook  are disapeared.

My Code to copy:


$sheet = $objPHPExcel->getActiveSheet();
$copiedSheet = $sheet->copy();
$copiedSheet->setTitle('OBS Suite Abon '.$nb_obs_suite);

Also, i tried with:



But not worked too.


Without copy, my file generate correctly. Any Idea?


Jul 22, 2009 at 6:31 AM

>> All image of my workbook  are disapeared.

I recall this bug in PHPExcel 1.6.7:

Can you try with latest source code:

Jul 22, 2009 at 8:50 AM

Thanks for your help but, i have the same errors with last version commited and it show me another error:

Notice: iconv_substr() [function.iconv-substr]: Unknown error (0) in C:\wamp\phenix\www\omicron\appli\lib\excel\Classes\PHPExcel\Shared\String.php on line 307

Before i update with the last version i had the version  27946.

Thx for your hard work!

Jul 22, 2009 at 10:05 AM


I found a temporary solution to my probleme.

In Classe\PHPExcel\Worksheet.php, we have this code using for copy sheets:

	 * Copy worksheet (!= clone!)
	 * @return PHPExcel_Worksheet
	public function copy() {
		$copied = clone $this;

		return $copied;

	 * Implement PHP __clone to create a deep clone, not just a shallow copy.
	public function __clone() {
		foreach ($this as $key => $val) {
			if ($key == '_parent') {

			if (is_object($val) || (is_array($val))) {
				$this->{$key} = unserialize(serialize($val));
The issue of image come from the function __clone. An image is an object so i just modify like this:

if (is_array($val)) {
        $this->{$key} = unserialize(serialize($val));

And it worked. So i think we have to make the difference beetween objects images and others in the condition.

Jul 23, 2009 at 8:03 AM
Edited Jul 23, 2009 at 8:03 AM

Thank you for your note. The problem I am having right now is that I cannot reproduce the bug. I will try to do some more testing.