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 ファイルを作成することにしました。これは私の目的には問題ありません。今必要なのは「開く/保存」ダイアログだけで、私にとっては完璧です。
あなたの時間と労力を前もって感謝します! :)