0

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());

これは正しくフォーマットしますが、価格フィールドのみを出力し、他には何も出力しません。

4

2 に答える 2

1

技術的には、Excel スプレッドシートを作成しているわけではありません。拡張子が .xls の CSV ファイルを作成しています。CSV はプレーン テキストであるため、書式を追加するメカニズムがありません。MySQL や PHP で数値を適切な通貨値のようにフォーマットすることはできますが、数値としての存在を破壊しています。それは、以前は数字だった文字列になります。

PHPExcelを使用して実際の Excel ファイルを生成する必要があります。このファイルには、色や数式など、Excel がサポートする通常の機能をすべて追加できます。

于 2011-06-10T17:32:04.427 に答える
0

コードは、XLS拡張子を持つテキストファイル(CSV形式)を生成しています。次に、ExcelがインストールされているWindowsでは、コンテンツがテキストファイルのみであるにもかかわらず、Excelによって自動的に開かれる場合があります。このメソッドでは、スタイルのあるデータを生成できません。

I suggest that you use OpenTBS to easily build your Excel file. OpenTBS is a PHP class which can build real XLSX, DOCX, ODT, ODS and more... using templates. You just design the template with Excel and then merge it with the data under PHP and you have a new XSLS directly for download, or as a files saved on the server.

于 2011-06-10T18:52:10.160 に答える