4

最近、PHPとMS Excelの統合をいじっています。私の仕事は、既存のスプレッドシートを開き、いくつかのデータを追加し、入力されたスプレッドシートを新しいファイルとして保存することです。xlsx ファイルがテンプレートとして使用されますが、基本的にはテンプレート充填エンジンのようなものです。

かなりいいフレームワークと思われるPHPExcelを調べました。概念実証を実装するために、私は次のことを行いました (私が何をする必要があるかを説明するために必要な最小限に減らしました):

$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objReader->setReadDataOnly(true);  
$objPHPExcel = $objReader->load("myTemplateToFill.xlsx");

    //Here comes the actual filling
$objWorksheet = $objPHPExcel->createSheet();
$objWorksheet->setTitle('Apple')    ;
$objWorksheet->setCellValue('A1', 'Banana');    
$objPHPExcel->setActiveSheetIndex(0);

$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter->save('myFilledTemplate.xlsx');

これを実行すると、新しいファイルが作成され、daat が挿入されましたが、悲しいことに、既存の書式設定がすべて失われていることがわかりました。

問題は、PHPExcel にこれらの formattigs を新しいファイルに保持させる方法があるかどうかです。またはさらに先へ: チャートなどをテンプレート ファイルに保持し、それらを私が試した方法で埋めることは可能ですか?

共有されたすべての経験に感謝します!

K

4

2 に答える 2

7

この行 $objReader->setReadDataOnly(true); のためにフォーマットが失われます。これにより、フォーマットではなく、テンプレート ワークブックからデータのみを読み取るようにリーダーに指示します。

また、既存のワークシートのデータを変更する必要があります。新しいワークシートを作成すると、フォーマットされていないワークシートが作成されます。または、PHPExcel_WorkSheet copy() メソッドを使用できます

于 2010-04-26T19:03:50.983 に答える
3

ええと、あなたは新しいワークシートを作成していますが、デフォルトではフォーマットがありません。既存のシートに値を追加する必要があると思いますか?

$objPHPExcel->setActiveSheetIndex(0); // index of sheet
$workSheet = $objPHPExcel->getActiveSheet();
$workSheet->setTitle('Pflaume');
于 2009-12-07T13:16:46.787 に答える