Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 输出到csv的打印语法_Php_Csv_Export To Excel - Fatal编程技术网

Php 输出到csv的打印语法

Php 输出到csv的打印语法,php,csv,export-to-excel,Php,Csv,Export To Excel,我想以csv格式打印到excel。这就是我迄今为止从答案开始工作的地方 <?php $dbh = dbh_get(); header('Content-type: application/csv'); header("Content-Disposition: inline; filename=file.csv"); readfile('file.csv'); $sql = 'select t.* from old t where t.entere

我想以csv格式打印到excel。这就是我迄今为止从答案开始工作的地方

<?php

$dbh = dbh_get();

header('Content-type: application/csv');
header("Content-Disposition: inline; filename=file.csv");
readfile('file.csv');

$sql = 'select t.*
          from old t
         where t.entered >= ? and t.entered < ?
           and t.status <> \'cancel\'
           and t.ccy = \'USD\'
         order by id desc';
$stmt = $dbh->prepare($sql);

$v = array();
$v[] = $date->format(DateTime::ISO8601);
$v[] = $dateEnd->format(DateTime::ISO8601);


$numRows = 0;
$stmt->execute($v);
while (true) {
    $r = $stmt->fetch();
    if (is_bool($r)) break;
    $numRows++;

    $bop = $r['comments'];
    $bop1 = strtok($bop, " "); //remove all but first word
    $bop2 = substr(strstr($bop," "), 1); //remove first word and space

$headers = ['PLACE','YEAR','MONTH','COY','NT','TOPS','BOP','COUNTRY','REC','SENT','DESC'];
$fields = ["Old",2015,$textDate,$r['cols'],$r['nt'],$bop1,"NTR",$r['name'],$r['first_name'],$r['last_name'],$bop2];

$fp = fopen('file.csv', 'w');
fputcsv($fp, $headers);
fputcsv($fp, $fields);
fclose($fp);
}

dbh_free($dbh);

不要通过手动构建CSV来惩罚自己。改用


您可以执行以下操作:

    $data = ['Old', '2015', $textDate];
    file_put_contents('pathTofile.csv', implode(';', $data) . PHP_EOL, FILE_APPEND);
更新:

与发布的一行代码相比,这里有更多的代码。只需将内容处置标题更改为:

header('Content-Disposition: attachment; filename="'.basename('file.csv').'"');

它强制下载。请参阅和

当您可以使用PHP的内置支持来构建CSV文件时,为什么要这样做?您有一个w标志的问题,它总是在写入文件之前清除文件。通过这种方法,你可以选择你自己。Excel女士期望;作为分隔符1。文件的打开不会在循环中,因为这样会很慢而且不必要。2.根据定义,CSV文件的字段之间用逗号分隔,Excel可以很好地处理这些字段。1。“w”的PHP手册上说只开放供编写;将文件指针放在文件的开头,并将文件截断为零长度。如果文件不存在,请尝试创建它。2.只是因为分号的缘故。最近Excel和.csv文件出现了一些问题,这只是当fopen()在生成文件的循环中时才会出现问题。显然不会。要想解决这个问题,如果我用这个,我怎么把头球放进去?还有一些数据来自SQL语句,可能有数千行。您可以使用循环将每一行添加到文件中。标题将只是对fputcsv()的另一个调用。我将更新答案以显示这一点。我无法使其正常工作,它无法下载任何内容。您正在尝试通过浏览器输出文件吗?如果是这样的话,那就是您需要添加的附加功能。确保php标记前没有空格,我可以撤消所有编辑并返回原始问题吗?我走错了方向
    $data = ['Old', '2015', $textDate];
    file_put_contents('pathTofile.csv', implode(';', $data) . PHP_EOL, FILE_APPEND);
header('Content-Disposition: attachment; filename="'.basename('file.csv').'"');