可能重复:
PHP将Excel导出到特定路径?
我不太熟悉PHP导出到excel或csv,但我使用PHP MySQL作为本地销售点。根据下面的代码,这实际上是有效的。。但这并不是它应该有的样子!所有记录都作为一行放在csv文件中,我该如何修复?此外,我该如何停止覆盖同一个文件。。。我的意思是,当我点击按钮导出csv时,它应该检查是否有现有的csv文件,如果有——创建新的!
谢谢
require_once('connect_db.php');
$items_array = array();
$result = mysql_query("SELECT * FROM sold_items");
while($row = mysql_fetch_array($result))
{
$items_array[] = $row['item_no'];
$items_array[] = $row['qty'];
}
$f = fopen('C:/mycsv.csv', 'w');
fputcsv($f, $items_array);
fclose($f);
fputcsv似乎只写入一行/记录,并且在其输出中包含一个行/记录终止符。您需要为报告的每一行调用fputcsv。
dbf的顺序文件命名解决方案在许多情况下都能很好地工作。就我个人而言,我发现添加时间戳很有帮助,因为当存在现有文件的集合时,它需要更少的IO。此外,即使在报告被修改/复制/触摸的情况下,也可以在不必打开每个报告的情况下知道报告的来源。
次要细节:将查询调整为仅使用的列。
<?php
require_once('connect_db.php');
$result = mysql_query("SELECT item_no, qty FROM sold_items");
$timestamp = date('Ymd-His');
$f = fopen("C:/mycsv-{$timestamp}.csv", 'w');
// Headers
fputcsv($f, array('Item No', 'Qty'));
while($row = mysql_fetch_row($result))
{
fputcsv($f, $row);
}
fclose($f);
首先是
$items_array[] = array($row['item_no'], $row['qty']);
其次,使用一个变量来存储文件名。
$filename = $name = "myscsv";
$index = 1;
while(file_exists($filename.".csv")) {
$filename = $name.$index;
$index++;
}
现在您可以保存它;)
$f = fopen("C:/{$filename}.csv", 'w');