将数据导出到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文件中的每条记录后显示间隙。
答案 0 :(得分:1)
您正在由于以下原因而出现差距
const empIds = [1, 3];
// object values in array are dynamic
const emps = [{
id: 1,
name: 'test1',
selected: false
},
{
id: 2,
name: 'test2',
selected: false
},
{
id: 3,
name: 'test3',
selected: false
}
];
emps.forEach(e => e.selected = empIds.includes(e.id));
console.log(emps);
行。 fwrite($output,"\r\n");
将自动在行尾添加新的行字符,因此无需添加其他字符。根据{{3}}:
fputcsv()将一行(作为字段数组传递)格式化为CSV并将其 (由换行符终止) 写入指定的文件句柄。
(强调是我的)
更新:fputcsv
始终使用“ \ n”作为行尾。除了Windows 10之前的记事本,几乎所有Windows应用程序都能正确理解它。Windows10版本现在可以正确呈现它。如果您绝对希望使用fputcsv
作为行尾,则需要其他技巧-请查看fputcsv
documentation以获取更多信息。