【发布时间】:2022-01-12 19:25:00
【问题描述】:
我正在尝试读取 txt 文件,将其转换为 csv 并在电子表格中显示。这里有很多例子,我已经尝试了很多,但结果是一样的。我似乎有两个问题。首先,我用来转换 csv 行的代码在末尾添加了一个额外的逗号,我无法将其删除。其次,即使输入测试字符串,电子表格也不会打开。
当我读入我的测试文件时,我得到一个这样的数组:
array [
Hunky Bill's Big Perogie / Pierogi Maker
9
4
10
5
5
1
2
1
]
我使用的代码是
$csv_file = 'arry.txt';
$save_name = 'csvout.csv';
if (($fp = fopen($csv_file ,'r'))) {
while(! feof($fp)) {
$item = fgets($fp);
$item = rtrim($item, "\r\n");
$csv_string .= '"' . $item . '",';
// $csv_string = substr($csv_string, 0, -1);
// $csv_string[strlen($csv_string)] = '';
// $csv_string = rtrim($csv_string, ',');
}
fclose($fp);
}
header("Expires: Mon, 26 Nov 2162 00:00:00 GMT");
header("Last-Modified: " . gmdate('D,d M Y H:i:s') . ' GMT');
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Content-Type: Application/octet-stream");
header("Content-Disposition: attachment; filename=$save_name");
echo $csv_string;
运行上面的代码会在屏幕上显示:
"Hunky Bills Big Perogie Pierogi Maker","9","4","10","5","5","1","2","1","","",
如果我取消注释要删除最后一个逗号的三行中的任何一行,所有逗号都会被删除。这是为什么呢?
如果我跳过上述内容并在 echo 语句之前输入这一行,电子表格仍然无法打开。它应该在电子表格程序中打开吗?
$csv_string = '"Hunky Bills Big Perogie Pierogi Maker","9","4","10","5","5","1","2","1"';
谁能看到我的问题出在哪里?
【问题讨论】:
标签: php arrays csv spreadsheet