【问题标题】:Export to CSV using php使用 php 导出为 CSV
【发布时间】:2014-08-17 09:11:32
【问题描述】:

这是我第一次尝试将数据导出到 csv 中,谁能告诉我该怎么做,下面是我自己尝试过的代码,但它不起作用,

它只是在 cvs 文件中打印标题而不是在 cvs 中打印数据,任何人都可以指导我哪里错了......

感谢

过滤数据.php

<?php

$mediaexport=$_GET["media"];

?>

<form action = "cmsexp_to_excel.php" method = "post">
<input checked type='checkbox' name="media"  value="<?php echo $mediaexport;?>" style='visibility:hidden' >
<input type="image" value="" src="/img/export.png" class="export" style='margin:0 5px -9px 183px;cursor:pointer;'>
</form>

cmsexp_to_excel.php

    <?php


    $dbHost = 'localhost'; // usually localhost
    $dbUsername = 'xxxxxxxx';
    $dbPassword = 'xxxxxxxxx';
    $dbDatabase = 'xxxxxxxxxx';
    $db = mysql_connect($dbHost, $dbUsername, $dbPassword) ;
    mysql_select_db ($dbDatabase, $db) ;

    $mediaexport=$_GET["media"];

     $values = "SELECT DISTINCT contact.`id` , contact.`contactgroup` , contact.`media` , contact.`media2` , contact.`email1` , contact.`nationality` , contact.`country3` , contact.`twon` , contact.`area` , contact.`gender` , contact.`married` , contact.`children` , contact.`driverslicense`
    FROM contact";

   $header = "Media" . "\t";
$header .= "E-mail" . "\t";
$header .= "Nationality" . "\t";
$header .= "City" . "\t";

while( $row1 = mysql_fetch_assoc($values)){


$row1[] = $row['media'];
$row1[] = $row['email1'];
$row1[] = $row['ntionality'];
$row1[] = $row['city'];

$data .= join(',', $row1)."\n";

}
header("Content-type: application/x-msdownload");
header("Content-Disposition: attachment; filename=Inbox-Reprot.xls");
header("Pragma: no-cache");
header("Expires: 0");
print "$header\n$data"; 
exit();

    ?>

【问题讨论】:

  • but its not working 不是对问题的有用描述。怎么了?你做了什么调试?您的代码生成了什么错误(例如“使用未定义的常量测试假设为'测试'”)?
  • 它只打开一个文件
  • 这是一段有效的代码:gist.github.com/tracend/3133975
  • 使用 PHP 内置的 fputcsv() 函数比创建自己的 CSV 编写器更好

标签: php export-to-csv


【解决方案1】:

所以,你有一个多维数组,像这样:

$my_array = array(
  array("First Name", "Last Name", "Address", "City"),
  array("Marty", "McFly", "9303 Lyon Drive", "Hill Valley"),
  array("Emmett", "Brown", "1640 Riverside Drive", "Hill Valley")
);

因此,您应该将标头设置为application/csv,并将echo 数组中的所有值用逗号分隔:

header("Content-type: application/csv");
header("Content-disposition: attachment; filename=your_file_name.csv");

foreach ($my_array as $row) {
  echo implode(",", $row) . "\r\n";
}

PHPFiddle 链接:http://phpfiddle.org/main/code/v2w6-cxv9

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-24
    • 1970-01-01
    • 2011-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多