5

Cake を使用しています。関数生成を使用してブラウザーで Excel ファイルを開くと、次のようになります。

Microsoft Excel から次のエラーが表示されます。

ファイル形式またはファイル拡張子が無効であるため、Excel はファイル 'グループ リスト .xlsx' を開くことができません。ファイルが破損していないこと、およびファイル拡張子がファイルの形式と一致していることを確認してください。

ブラウザからファイルをダウンロードして再度開いた後、ファイル名のスペースを削除しようとしましたが、上記と同じエラーが表示されます。誰でもこれを経験して解決しましたか?または何が起こっているかの手がかりはありますか?

基本的にExcelファイルは開いていますが、上記のエラーのため空です。?>コンポーネントファイルの1つでタグの末尾にあるスペースを削除するという同様の問題を読みました。しかし、どのコンポーネントファイルかわかりません..?

PS Microsoft Excel 2010 を使用していますが、これが原因でしょうか? PHPExcel は現在、"Microsoft Excel 2010" で動作しますか?

4

4 に答える 4

2

PHPExcel Excel2007 Writer は、Excel 2007、Excel 2010、および互換性パックを適用した Excel 2003 で読み取ることができる有効な xlsx ファイルを生成する必要があります。実際、ほとんどのテストは Excel2010 と Excel2003 で行っています。

最初に確認することは、ファイルをテキスト エディターで開いて、ファイルにエコーされている偽の文字があるかどうかです。存在する場合、それらのテキストは問題を特定するためのガイドになる可能性があります。特に、ファイルの最初の文字のスペースや改行に注意してください。

xlsx ファイルは xml ファイルの圧縮されたコレクションであるため、テキスト エディターに明らかなテキスト文字列 (PK 署名以外) が表示されない場合は、(オペレーティング プラットフォームに適した解凍ツールを使用して) 解凍してみてください。これにより、問題の診断に役立つ他のエラー メッセージが表示される場合があります。

Windows プラットフォームで実行している場合、ZipArchive 拡張機能 (php_zip.dll) のバグのあるバージョンがいくつかあり、このエラーが発生する可能性があります。最新の SVN コードでは、ZipArchive の代わりに PCLZip を使用できます。

それでも問題が解決しない場合は、PHPExcel ディスカッション フォーラムにすべての詳細を投稿してみてください。

于 2011-02-09T09:04:41.550 に答える
1

Excel ファイルを作成/ダウンロードするための適切なヘッダーを含む空のレイアウトを設定します

ここにPDFファイルの例があります

<?php 
 header("Content-type: application/pdf"); 
 echo $content_for_layout; 
?> 
于 2012-03-15T22:03:20.583 に答える
0

コントローラーで次のコードを使用して、ユーザーに Excel シートをダウンロードするように強制します (PHPExcel を使用して、CakePHP アプリケーションでレポートを生成します)。

header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="'.'myreportname.xls"');
header('Cache-Control: max-age=0');

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

$this->render(false);
  • $objPHPExcel | これは私のシート、PHPExcel() オブジェクトです

  • $this->render(false); | | クライアントブラウザに何かが出力されるのを避けるために、Excelファイルを台無しにしていないことを確認してください

于 2012-10-15T21:34:39.600 に答える
0

これを試しましたか?

<?php
$file="test.xls";
$test="<table border=1><tr><td>Cell 1</td><td>Cell 2</td></tr></table>";
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=$file");
echo $test;
?>

ありがとう

于 2012-07-13T06:48:00.237 に答える