我将我的mysql数据库导出到excel,一切正常,但我希望价格字段在Excel电子表格中显示美元符号和逗号。
这是我的代码:
$pubtable = $_GET["publication"];
$addate = $_GET["adDateHidden"];
$export = mysql_query("SELECT * FROM $pubtable WHERE addate = '$addate' ORDER BY price DESC") or die ("Sql error : " . mysql_error());
$fields = mysql_num_fields($export);
for($i = 0; $i < $fields; $i++){
$header .= mysql_field_name($export , $i). "\t";
}
while($row = mysql_fetch_row($export)){
$line = '';
foreach($row as $value) {
if(!isset($value) || trim($value) == "") {
$value = "\t";
} else {
$value = str_replace('"' , '""' , $value);
$value = '"' . $value . '"' . "\t";
}
$line .= $value;
}
$data .= trim($line). "\n";
}
$data = str_replace("\r" , "" , $data);
if(trim($data) == ""){
$data = "\n(0)Records Found!\n";
}
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=".$pubtable."_".$addate.".xls");
header("Pragma: no-cache");
header("Expires: 0");
header ('Content-Transfer-Encoding: binary');
header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
header ('Cache-Control: cache, must-revalidate');
print "$header\n$data";
我试过这个
$export = mysql_query("SELECT CONCAT('$', FORMAT(price, 2)) as fieldalias * FROM $pubtable WHERE addate = '$addate' ORDER BY fieldalias DESC") or die ("Sql error : " . mysql_error());
这样可以正确格式化,但它只输出价格字段而不是其他内容。
答案 0 :(得分:1)
从技术上讲,您不会生成Excel电子表格。您正在生成扩展名为.xls的CSV文件。 CSV没有添加格式的机制,因为它只是纯文本。你可以将MySQL和/或PHP格式化为一个看似不错的货币值的数字,但是你将它作为一个数字销毁。它将是一个字符串 - 用于成为一个数字。
您应该使用PHPExcel生成一个ACTUAL Excel文件,您可以在其中添加Excel支持的所有常用内容,包括颜色和公式。
答案 1 :(得分:0)
您的代码正在生成带有XLS扩展名的文本文件(CSV格式化)。然后,在安装了Excel的Windows下,尽管内容只是文本文件,但Excel可能会自动打开它。 此方法无法生成任何样式的数据。
我建议您使用OpenTBS轻松构建Excel文件。 OpenTBS是一个PHP类,可以使用模板构建真正的XLSX,DOCX,ODT,ODS等等。您只需使用Excel设计模板,然后将其与PHP下的数据合并,您就可以直接下载新的XSLS,或者保存在服务器上的文件。