克隆一个表格的内容和样式到另一个 – PHP的Excel

我需要将一个Excel工作簿中的一个工作表的内容复制到一个新的Excel工作簿中的工作表。 问题是,我不知道这些工作表包含什么或他们的格式。 但是,这将只是每一次的第一张。

我尝试了一种方法,但是每次都用尽内存。 所以我想我会一行一行地做100000行。 无论如何,我从一开始就得到了数据,但没有把它写入新的表格。 我该怎么做?

这是我到目前为止:

// Open the current worksheet App::import('Vendor', 'PHPExcel'); if (!class_exists('PHPExcel')) { throw new CakeException('Vendor class PHPExcel not found!'); $this->xls = PHPExcel_IOFactory::load($path); // Read all content $this->xls->getActiveSheet()->rangeToArray('A1:ZZZZ1'); // Close current worksheet $this->xls->disconnectWorksheets(); // Delete worksheet unlink($destination); // Open new worksheet $this->xls = new PHPExcel(); $newWorksheet = new PHPExcel_Worksheet($this->xls, 'Sheet 1'); $this->xls->addSheet($newWorksheet); $this->xls->setActiveSheetIndexByName('Sheet 1'); // Write all the content $this->xls->getActiveSheet()->fromArray($array,null,'A1'); // Save current worksheet $objWriter = PHPExcel_IOFactory::createWriter($this->xls, 'Excel2007'); $objWriter->save($destination); 

我究竟做错了什么?

那么还有一个更简单的方法来做到这一点? 我不想写所有这些代码,最后都是重新发明轮子?

提前致谢

有一个内置的方法是专门为你做这个的:

 $objPHPExcel1 = PHPExcel_IOFactory::load($path); $objPHPExcel2 = new PHPExcel(); // Copy active worksheet from $objPHPExcel1 to $objPHPExcel2 $worksheet = $objPHPExcel1->getActiveSheet(); $objPHPExcel2->addExternalSheet($worksheet) 

如果内存不足,在内存中构build大型数组以尝试手动复制也无济于事。

有一些方法可以减less内存(如单元caching),希望使用这些方法来减less内存使用量