0

PHPを使用して、CSVを介してExcelファイルを生成しています。非常に単純なコードを使用して、独自のデータを入力する前に関数全体を準備しています。

$list = array (
  array('#', 'Registrar', 'Country', 'Website', 'Email Address'),
  array('123', '456', '789', 'aaa', 'bbb'),
  array('123', '456', '789', 'aaa', 'bbb'),
);

$fp = fopen('myfile.xls', 'w');

foreach ($list as $fields) {
  fputcsv($fp, $fields, "\t", '"');
}

fclose($fp);

コードは正常に動作します。ただし、PHP ファイルを実行したディレクトリに「myfile.xls」を自動的に保存します。ページに「開く/保存」ダイアログを表示して、ユーザーがファイルを保存する場所を選択できるようにします。次のようなヘッダーのトリックをいくつか試しました。

header ("Content-Type: application/download");
header ("Content-Disposition: attachment; filename=myfile.xls");
header("Content-Length: " . filesize(myfile.xls));

ただし、これを使用すると、エクスポートされたファイルには、「リスト」変数のデータではなく、ページのコンテンツ (タイトル付きのヘッダー、メニュー、フッターなどを含む) が表示されます...ヘッダーもフッターもフレームワークの一部として PHP ページに含める必要があるため、PHP の CSV 関数によって生成された「myfile.xls」を保存する場所を選択したいだけです。

また、Excel を生成することを目的とした PHPExcel やその他のパッケージを検討して使用しようとしましたが、それらのいずれも適切に動作させることができません。私はそれを試すのに何日も費やしてしまったので、単純に CSV ファイルを作成することにしました。これは私の目的には問題ありません。今必要なのは「開く/保存」ダイアログだけで、私にとっては完璧です。

あなたの時間と労力を前もって感謝します! :)

4

1 に答える 1

0

以下のコードを試してください

$file = "location of file to download"
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
于 2013-09-20T11:31:40.743 に答える