データベースから値を取得し、ダウンロードして Outlook にインポートする csv ファイルに情報を挿入しています。
私はこのコードを使用しています
// output headers so that the file is downloaded rather than displayed
$today = date("m.d.y");
header('Content-Type: text/csv;');
header('Content-Disposition: attachment; filename='.$today.'-allowners.csv');
// create a file pointer connected to the output stream
$output = fopen('php://output', 'w');
// output the column headings
fputcsv($output, array('firstname', 'lastname', 'email'));
// fetch the data
$rows = mysql_query('SELECT first_name, last_name, email FROM owners');
// loop over the rows, outputting them
while ($row = mysql_fetch_assoc($rows)) fputcsv($output, $row);
そして、私は奇妙な結果を得ています。最初に列のタイトルに区切り文字がありません。次に、データベースのすべてのフィールドが「 "」で区切られているわけではありません。出力は次のようになります。
firstname,lastname,email
" aaaaa"," bbbbb",0000
" aaaaa"," bbbbb"," 0000"
"aaaaa ",bbbbb,000@00000.com
aaaaa,bbbbb,000.00.0@00000.com
" aaaaa"," bbbbb"," 000.00000@00000.com"
" aaaaa"," bbbbb"," 000000@000000.com"
また、Outlook にインポートしようとすると、ファイルが無効であるか、別のアプリケーションまたはプロセスで使用されているというエラーが表示されます。
- - - - - - - -解決 - - - - - - - -
問題は、Linux で実行されている php で作成されたファイルの改行が Windows システムで開かれることでした。これは一部のソフトウェアでは常に問題を引き起こすわけではありませんが、MS Outlook であるため、かなり厳密に見えます。Excelでファイルを開き、CSVとして保存して既存のファイルを上書きすることをテストしましたが、問題なく動作しました。
解決策は、他の質問への回答の次の URL にあります。
http://stackoverflow.com/a/12723639/2633609