PHPExcel: разделение листа документа Excel по листам

#phpexcel

#phpexcel

Вопрос:

Я использую библиотеку PHPExcel для многих манипуляций с Excel в сочетании с PHP / MySQL. Это мне очень помогает.

Но я не могу понять, как разделить лист документа Excel на лист, где каждый лист создается как новый документ Excel.

В то же время мне также нужно удалить пустые строки, которые находятся в исходном документе, в новых созданных документах Excel (очистка итоговых документов).).

Каков наилучший способ сделать это?

Мы высоко ценим все ваши впечатления.

С наилучшими пожеланиями.

Ответ №1:

Я нашел способ сделать то, что хотел.

Вот решение (возможно, не лучший способ, но оно работает достаточно хорошо) :

 $file = $_POST['file'];
$filename = pathinfo($file, PATHINFO_FILENAME);

require_once 'phpexcel/Classes/PHPExcel.php';

$xls = new PHPExcel();
$xlsReader= new PHPExcel_Reader_Excel5();
$xlsTemplate = $xlsReader->load($file);

$sheet1 = $xlsTemplate->getSheetByName('Sheet1');
$xls->addExternalSheet($sheet1,0);
$xls->removeSheetByIndex(1);
$xlsWriter = new PHPExcel_Writer_Excel5($xls);
$xlsWriter->save($filename."_Sheet1.xls");

$sheet2 = $xlsTemplate->getSheetByName('Sheet2');
$xls->addExternalSheet($sheet2,0);
$xls->removeSheetByIndex(1);
$xlsWriter = new PHPExcel_Writer_Excel5($xls);
$xlsWriter->save($filename."_Sheet2.xls");

$sheet3 = $xlsTemplate->getSheetByName('Sheet3');
$xls->addExternalSheet($sheet3,0);
$xls->removeSheetByIndex(1);
$xlsWriter = new PHPExcel_Writer_Excel5($xls);
$xlsWriter->save($filename."_Sheet3.xls");

$sheet4 = $xlsTemplate->getSheetByName('Sheet4');
$xls->addExternalSheet($sheet4,0);
$xls->removeSheetByIndex(1);
$xlsWriter = new PHPExcel_Writer_Excel5($xls);
$xlsWriter->save($filename."_Sheet4.xls");

$sheet5 = $xlsTemplate->getSheetByName('Sheet5');
$xls->addExternalSheet($sheet5,0);
$xls->removeSheetByIndex(1);
$xlsWriter = new PHPExcel_Writer_Excel5($xls);
$xlsWriter->save($filename."_Sheet5.xls");

$sheet6 = $xlsTemplate->getSheetByName('Sheet6');
$xls->addExternalSheet($sheet6,0);
$xls->removeSheetByIndex(1);
$xlsWriter = new PHPExcel_Writer_Excel5($xls);
$xlsWriter->save($filename."_Sheet6.xls");
  

Затем мой исходный файл Excel, содержащий 6 листов, теперь разделен на 6 файлов Excel, как я и хотел.

Как вы можете видеть, это было не так сложно выпустить, но документация настолько запутана…

Надеюсь, это может помочь.