php写入xls文件空白单元格未显示
我正在尝试将从SQL查询获得的数据写入以制表符分隔的文本文件。但有一个问题是,如果有一个空白单元格,它就不会注册。只需在空白单元格中写入下一个文本。 数据库数据:php写入xls文件空白单元格未显示,php,excel,Php,Excel,我正在尝试将从SQL查询获得的数据写入以制表符分隔的文本文件。但有一个问题是,如果有一个空白单元格,它就不会注册。只需在空白单元格中写入下一个文本。 数据库数据: id text 2ndText 1 1t1 2t1 2 2t2 3 1t3 2t3 excel输出: id text 2ndText 1 1t1 2t1 2 2t2 3 1t3
id text 2ndText
1 1t1 2t1
2 2t2
3 1t3 2t3
excel输出:
id text 2ndText
1 1t1 2t1
2 2t2
3 1t3 2t3
我们使用的代码是:
while ($row=mysql_fetch_row($Recordset1))
{
$line='';
$fc=0;
for ($i=0;$i<$fields;$i++)
{
if (substr(strtoupper(mysql_field_name($Recordset1,$i)),0,7)!="DBSTACK")
{
if (strtoupper($_POST['checkbox'.$fc])==strtoupper(mysql_field_name($Recordset1,$i)))
{
$value=$row[$i];
if ((!isset($value)) | ($value == ""))
{
$value = "\t";
} else
{
$value=str_replace('"','""',$value);
$value='"'.$value.'"'."\t";
}
$line.=$value;
}
$fc++;
}
}
$data.=trim($line)."\n";
}
$data=str_replace("\r","",$data);
$TargetFileName="temp/".session_id().time().".xls";
$target=fopen($TargetFileName,"wb");
$XLData=$header."\n".$data;
fwrite($target,$XLData);
fclose($target);
while($row=mysql\u fetch\u row($Recordset1))
{
$line='';
$fc=0;
对于($i=0;$i我不会用一根十英尺长的杆子去碰你的数据库代码。你使用的数据库API已经被弃用多年了;替代品已经有十年了
所以我的第一个建议是使用一个合适的数据库API,它返回一个按列名索引的行数组
我还建议您的数据库查询只选择您需要的列,而不是select*
如果你想写一个CSV文件(技术上是TSV,但这很好),你应该使用,这将节省你必须滚动你自己的CSV写入程序,并允许你使用数组而不是字符串
您还应该使用csv
扩展名保存它,以避免在Excel中打开时出错
但是,至于您所问的问题,当有一个空字段时,您没有写入值,只有一个制表符分隔符。那么:
if ((!isset($value)) | ($value == "")) {
$value = "\"\"\t";
}
PS$value
将始终被设置,因为您在上面的行中设置了它。这确实是我们计划解决此问题的遗留代码。关于答案,它非常有效,谢谢。