2011-07-30 5 views
3

PHPExcelライブラリを使用してExcelドキュメントを作成しました。 Numbers(mac)とOffice 2007(windows)の両方で、私のドキュメントが開き、問題なく表示されます。私はファイルを.xlsxファイルとして保存しています。PHPExcelドキュメントを開くときの警告/エラー

ファイルを開くと、正しく表示されますが、次のエラー/警告が表示されます。数字で

、それは警告を与える「シートにパスワード保護をサポートされておらず、削除されたが

Office 2007のでは、それは、TEにエラーを与える「は、Excelが 『filename.xlsx』で読めないコンテンツを発見しました。 "はいをクリックするとすべて表示され、「レコードが削除されました:/ sl/worksheets /からのセルをマージしてください」というメッセージが表示されます。このブックの内容を回復するには、 sheet1.xml part "と入力します。

私は自分のファイルにパスワードを追加していないことに注意してください。私も1つのワークブックしか持っていません。誰も私がこれらを取り除く方法、またはその原因を知っていますか?

答えて

4

私は同じ問題を持っていたと私は単に$objWriter->save('php://output');コマンドjustafter

exit(); 

を入れて解決しました。

例:

// Redirect output to a client’s web browser (Excel2007) 
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); 
header('Content-Disposition: attachment;filename="industrializzazione_RTW_'.$rows[0]['stagione'].'.xlsx"'); 
header('Cache-Control: max-age=0'); 

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); 
$objWriter->save('php://output'); 
exit(); 
1

mergecellでスプレッドシートを構築するCakePHPを使用しているときに、何か似たようなものに遭遇しました。これは、Excel 2003では正常に動作しますが、Excel 2007形式では正常に動作しません。

$objPHPExcel->getActiveSheet()->mergeCells('C30:E30'); 

スプレッドシートをうまく読み込めます。ただし、これらのバリアントなどの変数を使用する場合は、

$mergestr = '\'C'.(30+$i).':E'.(30+$i).'\''; 
$objPHPExcel->getActiveSheet()->mergeCells($mergestr); 
$objPHPExcel->getActiveSheet()->mergeCells(eval("return \$$mergestr;")); 
$objPHPExcel->getActiveSheet()->mergeCells('\'C'.(30+$i).':E'.(30+$i).'\''); 
$objPHPExcel->getActiveSheet()->mergeCells('C'.(30+$i).':E'.(30+$i)); 

と同じエラーが発生します。私はPHPExcelがExcel2007ライターのために好きになる方法で変数をエスケープする方法があるかどうかはわかりません。上記の最後の例では、Excel5ライターはうまく動作します。これが誰かを助けることを望みます。

関連する問題