将csv导出到用户系统上的任何其他程序


Export csv to any other program user has on his system

我想导出我的数据库数据到CSV或要求用户"打开与他的本地支持程序"。

导出到csv我可以理解使用这个代码:

<?php
header("Content-type: text/csv; charset=UTF-8");
header('Content-Disposition: attachment; filename=Export.csv');
//connection
$con = mysql_connect('localhost', 'root', '');
if(!$con){
    echo "Error connection";
}
//select db
$select_db = mysql_select_db('country', $con);
if(!$select_db){
    echo "Error to select database";
}
mysql_set_charset("utf8", $con);
//Mysql query to get records from datanbase
$user_query = mysql_query('SELECT * FROM countries');
//While loop to fetch the records
$contents = "ccode,country'n";
while($row = mysql_fetch_array($user_query))
{
    $contents.=$row['ccode'].",";
    $contents.=$row['country']."'n";
}
$contents_final = chr(255).chr(254).mb_convert_encoding($contents, "UTF-16LE","UTF-8");
print $contents_final;
?>

第二部分如何管理?显示选项打开与本地安装的程序?以上代码是否正确?

header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: private',false);
header('Content-Type: application/csv');
header('Content-Disposition: attachment; filename="your_file_name.csv"');
header('Content-Transfer-Encoding: binary');

这将导致浏览器显示保存/打开文件的对话框。

你也应该考虑a)切换到mysqli_或PDO, b)使用PHP内置的csv函数,例如

ob_start();
$f = fopen('php://output', 'w');
// $results comes from mysqli_ functions
foreach ( $results as $k => $v ) {
    fputcsv($f, $v);
}
$output = ob_get_contents();
ob_end_clean();
echo $output;
相关文章: