Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将一张工作表的内容和样式克隆到另一张工作表-PHP Excel_Php_Excel_Phpexcel - Fatal编程技术网

将一张工作表的内容和样式克隆到另一张工作表-PHP Excel

将一张工作表的内容和样式克隆到另一张工作表-PHP Excel,php,excel,phpexcel,Php,Excel,Phpexcel,我需要将Excel工作簿中一张工作表的内容复制到新Excel工作簿中的工作表。问题是,我不知道这些表格包含什么或它们的格式。但是,每次都只会是第一张 我尝试过一种方法,但每次都会出现内存不足的情况。所以我想我会一行一行地做,10万行。无论如何,我从一行开始,它得到了数据,但是没有运气把它写到新的工作表上。我该怎么做 以下是我到目前为止的情况: // Open the current worksheet App::import('Vendor', 'PHPExcel'); if (!class_e

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

我尝试过一种方法,但每次都会出现内存不足的情况。所以我想我会一行一行地做,10万行。无论如何,我从一行开始,它得到了数据,但是没有运气把它写到新的工作表上。我该怎么做

以下是我到目前为止的情况:

// 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)
如果内存不足,在内存中构建大型阵列以尝试手动复制也无济于事


有一些方法可以减少内存,比如单元缓存,希望使用这些方法来减少内存使用

有没有一种方法可以强制它只读值和样式,而不是公式?呃,没有。。。你对公式有什么问题?它们是单元格的内容。你为什么不想要呢?没问题。如果在生成的表单中不使用它们,就看不到它们的意义。我想保留它们没有什么害处。。。谢谢你的帮助!:)@Albert我知道这很旧,但您可以手动迭代所有单元格,检查以“=”开头的值,并使用getCalculatedValue()转换它们all@MarkBaker我们如何从不同的文件复制相同的内容。