これがうまくいかない理由については、説明すると長くなりすぎるので、ここでは詳しく説明しません。しかし、あなたが望むものを達成するために取ることができる解決策がいくつかあります:
オプション1
Excel ワークブックは 1 つ以上のワークシートで構成されるため、各 "ファイル" を個別のファイルではなく、個別のワークシートとして作成できます。
// Create new PHPExcel object
$objPHPExcel = new PHPExcel();
// First excel worksheet, (created when you instantiate a new PHPExcel object)
$objPHPExcel->getActiveSheet()
->setCellValue('c5','10');
$objPHPExcel->getActiveSheet()
->setCellValue('c6','20');
$objPHPExcel->getActiveSheet()
->setCellValue('c7','30');
$objPHPExcel->getActiveSheet()
->setCellValue('c8','40');
// Second excel worksheet
// Add new sheet, which should also set it as the new "active" sheet
$objPHPExcel->createSheet()
$objPHPExcel->getActiveSheet()
->setCellValue('c5','50');
$objPHPExcel->getActiveSheet()
->setCellValue('c6','60');
デフォルトでは、HTML Writer は 1 つのワークシート (最初のワークシート) のみを書き込みますが、すべてのシートを書き込むように設定できます。
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'HTML');
$objWriter->writeAllSheets();
$objWriter->save('combinedexcelpage.html');
オプション #2
HTML ライターの save() メソッドは常にファイル ストリーム (ファイルシステム ファイルまたは php://output) を生成しますが、save() を使用するのではなく、クラス内の個々のメソッドを呼び出して、書式設定されたワークシートを含む文字列を生成できます。それらの「ブロック」から独自の出力を構築します。
$data = '';
// First excel file
$objPHPExcel1 = new PHPExcel();
$objPHPExcel1->getActiveSheet()
->setCellValue('c5','10');
$objPHPExcel1->getActiveSheet()
->setCellValue('c6','20');
$objPHPExcel1->getActiveSheet()
->setCellValue('c7','30');
$objPHPExcel1->getActiveSheet()
->setCellValue('c8','40');
$objWriter1 = PHPExcel_IOFactory::createWriter($objPHPExcel, 'HTML');
$objWriter1->generateStyles(false);
$data .= $objWriter1->generateHTMLHeader();
$data .= $objWriter1->generateSheetData();
// Second excel file
$objPHPExcel2 = new PHPExcel();
$objPHPExcel2->getActiveSheet()
->setCellValue('c5','50');
$objPHPExcel2->getActiveSheet()
->setCellValue('c6','60');
$objWriter2 = PHPExcel_IOFactory::createWriter($objPHPExcel2, 'HTML');
$objWriter2->generateStyles(false);
$data .= $objWriter2->generateSheetData();
$data .= $objWriter2->generateHTMLFooter();
file_put_contents('combinedexcelpage.html', $data);
これらのオプションは両方とも、開発者向けドキュメントのセクション 6.8 で説明されています。