gpt4 book ai didi

php - 如何设置逗号分隔符将每个单元格从 php 导出到 csv

转载 作者:行者123 更新时间:2023-11-30 00:11:20 25 4
gpt4 key购买 nike

我有一个 php 脚本,可以将数据从 mysql 导出到 csv 中。当脚本较小时,一切工作正常,但现在,当它达到大量代码行时,它无法完成工作。

问题:它定期导出csv文件,但所有表格结果都在excel的第一个单元格中。它应该填充每个单元格 - 它应该在数据库中识别出逗号的位置,然后使用分隔符并分别拆分为单元格。

所以,分隔符不起作用,我不知道为什么。它应该使用逗号并将其分割,并且应该使用 |再次 split 。

这是代码:

$link = mysql_connect($host, $user, $pass) or die("Can not connect." . mysql_error());
mysql_select_db($db) or die("Can not connect.");
$result = mysql_query("SHOW COLUMNS FROM ".$table."");
$columnName = array();
if (mysql_num_rows($result) > 0)
{
while ($row = mysql_fetch_assoc($result))
{
$columnName[] = $row['Field'];
$i++;
}
}
$columnName[] .= "\n";
$needle = '|';
$values = mysql_query("SELECT * FROM ".$table." where id=".$id."");
while ($rowr = mysql_fetch_row($values))
{
for ($j=0;$j<$i;$j++)
{
$colName = $columnName[$j];
$count = strlen($rowr[$j]) - strlen(str_replace(str_split($needle), '', $rowr[$j]));
if ($count > 1)
{
for($p=0;$p<$count;$p++)
{
$colName .= ",";
}
$columnName[$j] = $colName;
$csv_output_column_names .= $columnName[$j].", ";
$csv_output_column_values .= str_replace('|',',',$rowr[$j]).", ";
}
else
{
$csv_output_column_names .= $columnName[$j].", ";
$csv_output_column_values .= $rowr[$j] .", ";
}
}
$csv_output_column_values .= "\n";
}
$csv_output = $csv_output_column_names."\n".$csv_output_column_values;
$filename = $file."_".date("Y-m-d");
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: csv" . date("Y-m-d") . ".csv");
header("Content-disposition: filename=".$filename.".csv");
print $csv_output;
exit;
?>

最佳答案

您的问题是您没有按照 Excel 的预期引用字段。

您应该使用已经存在的fgetcsv,而不是重新发明轮子。和 fputcsv功能。

通常这些用于写入文件,但您可以创建标准输出的文件句柄,以便将它们打印到屏幕上。例如:

header("Content-type: application/vnd.ms-excel");
header("Content-disposition: csv" . date("Y-m-d") . ".csv");
header("Content-disposition: filename=".$filename.".csv");

// $lines is a 2D array with all rows and their column data
// $columns is a 1D array with each row's columns (see examples from fputcsv documentation)
$out = fopen("php://stdout", "w");
foreach ($lines as $columns) { fputcsv($out, $columns); }
fclose($out);

关于php - 如何设置逗号分隔符将每个单元格从 php 导出到 csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24024608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com