1

2 つの xls があります。この情報を 1 つの HTML ページにプロットしたいと考えています。

注:前提として、xlsとして言及しました。実際の xls 位置は、データベース テーブルに既に存在します。これらの位置をレンダリングし、HTML ページにプロットします。

include_once("Classes/PHPExcel/IOFactory.php");
// Create new PHPExcel object
$objPHPExcel = new PHPExcel();

//first excel file


$objPHPExcel->getActiveSheet()
           ->setCellValue('c5','10');
$objPHPExcel->getActiveSheet()
           ->setCellValue('c6','20');
$objPHPExcel->getActiveSheet()
           ->setCellValue('c7','30');
$objPHPExcel->getActiveSheet()
           ->setCellValue('c8','40');


$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'HTML');

//second excel file

$objPHPExcel->getActiveSheet()
           ->setCellValue('c5','50');
$objPHPExcel->getActiveSheet()
           ->setCellValue('c6','60');


$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'HTML');        

$objWriter->save('combinedexcelpage.html');
4

1 に答える 1

1

これがうまくいかない理由については、説明すると長くなりすぎるので、ここでは詳しく説明しません。しかし、あなたが望むものを達成するために取ることができる解決策がいくつかあります:

オプション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 で説明されています。

于 2013-07-13T09:39:47.987 に答える