【问题标题】:Exporting the data to csv file not displaying the records correctly using php将数据导出到 csv 文件未使用 php 正确显示记录
【发布时间】:2018-10-24 07:33:15
【问题描述】:

将数据导出到 csv 文件工作正常,但在尝试打开 csv 文件时出现问题,显示每条记录之间的行间距。

添加此行是因为之前如果我在记事本中打开文件,它会在一行中显示所有数据,所以在此之后添加了这一行,它在记事本中工作正常,但在 CSV 格式中遇到问题,在每条记录之前都会出现行间隙。

fwrite($output,"\r\n"); 


$txtstartdate=$_POST['txtstartdate'];
    $txtenddate=$_POST['txtenddate'];   

    header('Content-Type:text/csv;charset=utf-8');
    header('Content-Disposition:attachment;filename=appointmentlist.csv');
    $output = fopen('php://output','w');
    fputcsv($output,array('Appointment Id','First name','Last Name','Email','Gender','Department','Phone Number','Appointment Date','Address','Status'));
    $query = "select * from appointment  WHERE date BETWEEN '$txtstartdate' AND  '$txtenddate' ORDER BY date DESC";
    $result = mysqli_query($conn,$query);
    while($row = mysqli_fetch_assoc($result))
    {
        fwrite($output,"\r\n"); 
        fputcsv($output,$row);
    }
    fclose($output);

如果我在记事本中打开它会像这样显示

记事本:

"Appointment Id","First name","Last Name",Email,Gender,Department,"Phone Number","Appointment Date",Address,Status

2,aaa,bbbb,ccc@gmail.com,male,physician,9606567652,2018-10-04,"ctc,odisha",0

3,nas,maha,shu@gmail.com,male,physician,9207644052,2018-10-04,"ctc,odisha",0

在 CSV 中,它在每条记录之后显示一个行间隙。所以我不想在 CSV 文件中的每条记录之后显示间隙。

【问题讨论】:

  • 如果我没记错的话,fputcsv 会自己添加一个行终止符。无需手动将 \r\n 写入文件。
  • @dnFer 如果我没有添加,那么它会在记事本中的一行中显示所有记录,为此我已经添加了该行
  • fputcsv and newline codes的可能重复

标签: php


【解决方案1】:

你会因为

而出现差距
  fwrite($output,"\r\n");

线。 fputcsv 会在行尾自动添加换行符,所以不需要再添加一个。根据fputcsv documentation

fputcsv() 将一行(作为字段数组传递)格式化为 CSV,并将其 (由换行符终止) 写入指定的文件句柄。

(重点是我的)

更新: fputcsv 始终使用“\n”作为行尾。几乎所有的 Windows 应用程序都能正确理解它,除了记事本直到 Windows 10。Windows 10 版本现在可以正确呈现它。如果您完全决定使用\r\n 作为行尾,则需要额外的技巧 - 查看fputcsv and newline codes 了解更多信息。

【讨论】:

  • 如果我没有添加该行,那么以 CSV 格式它工作正常,但如果我尝试在记事本中打开文件,它只会在一行中显示记录和标题
  • 不要在记事本中打开它。使用普通的编辑器,甚至是 Excel
  • @test 他们不需要“记事本格式”——他们需要文本格式,你可以得到。记事本根本无法将“\n”理解为行尾。
猜你喜欢
  • 1970-01-01
  • 2019-04-16
  • 2013-04-16
  • 1970-01-01
  • 1970-01-01
  • 2014-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多