-1

mysqlからxlsへのデータのエクスポートに使用するphpで記述されたコードがいくつかありますが、出力phpに問題があります。

これがコードです

<?php
// koneksi database
$db = "k8665xxxx";

mysql_connect("localhost","k866xxx","kixxx");
mysql_select_db("$db");

$date = date('d-m-Y');
$filename = "Data-inquiry-downloaded-$date.xls";

// nilai awal counter untuk jumlah data yang sukses dan yang gagal diimport
$sukses = 0;
$gagal = 0;
$table = "promo";


//jumlah kolom
$jkolom=0;

//generate kolom
$q= mysql_query("select * from $table where last_update between '$_POST[DariTanggal]' AND '$_POST[SampaiTanggal]'");
$r=mysql_fetch_assoc($q);
foreach ($r as $head=>$nilai) {
$judul = str_replace("Promo","Inquiry","$head");
$header .=$judul."\t"; //print header table
$jkolom++;
}
$header .= "\n";

//generate baris
$result= mysql_query("select * from $table where last_update between '$_POST[DariTanggal]' AND '$_POST[SampaiTanggal]'");
while ($row=mysql_fetch_array($result)) {
for ($x=0; $x<$jkolom; $x++) {
$content .=$row[$x]."\t";
}
$content .= $row[$x]."\n";
}


$output .= $header.$content;
header('Content-type:application/ms-excel');
header('Content-Disposition: attachment; filename='.$filename);
echo $output;

?>

そして、これが出力です...

622 Joni    bekasi  2193850955      4/11/2012                   spooring        yani    TELP        Bekasi  deal
623 rengko      81383691374 cek distributor komo    4/11/2012                   33x12.5x15  ban rosi    TELP        DKI Jakarta 
624 Joko Prayitno               4/11/2012                   175/65/14   ban rosi    EMAIL   jokfis2001@yahoo.com    DKI Jakarta 
625 diana   Jl.landas pacu timur blok D No.5kemayoran   818772885       4/11/2012   B1603BFF    Honda   2009    jazz Rs ban 185/55/R16  ban yani    YM  diana.william@ymail.com Jakarta Pusat   deal
626 Indra   Jln.Terusan I Gusti NgurahRay Pondok Kopi                                                       
    8129496491      4/11/2012   B8723KF Suzuki  2004    baleno  paket dasi  paket dasi  rosi    TELP    ind_dra@yahoo.com   Jakarta Timur   deal        
627 ari depok   2128639500  mau konfirmasi lagi     4/11/2012                   195/60/15   ban rosi    TELP        Depok   

詳細を教えてください。番号626を見てください。データは次のようになります。

626 Indra   Jln.Terusan I Gusti NgurahRay Pondok Kopi                                                       
    8129496491      4/11/2012   B8723KF Suzuki  2004    baleno  paket dasi  paket dasi  rosi    TELP    ind_dra@yahoo.com   Jakarta Timur   deal        

しかし、それは...

626 Indra   Jln.Terusan I Gusti NgurahRay Pondok Kopi  8129496491      4/11/2012   B8723KF Suzuki  2004    baleno  paket dasi  paket dasi  rosi    TELP    ind_dra@yahoo.com   Jakarta Timur   deal 

そして、私のデータの多くはそのようになります..誰かが私の問題について何か考えを持っていますか?

4

2 に答える 2

2

区切られたデータ文字列を作成するのではなく、組み込み関数を使用する必要がありますfputcsv()

例(要約)

header('Content-Type: text/csv' );
header('Content-Disposition: attachment;filename='.$filename);
$fp = fopen('php://output', 'w');

while ($row = mysql_fetch_row($result)) {
    fputcsv($fp, $row);
}
fclose($fp);
于 2012-07-16T07:29:25.907 に答える
1

データベースのテキストに、のような2行の行区切りがあると思います。削除するために$content .=$row[$x]."\t";使用するか、または提案されたcsv関数(Philなど)に組み込まれているphp:sを使用します。str_replace()\n

csvのデータだけでなく、より複雑なxlsを作成する場合は、「ExcelXML2003」ファイルについて読むことをお勧めします。

$content .= str_replace("\n", " ", $row[$x]) . "\t";

アップデート

または、不要な空白をすべて削除します

$content .= trim($row[$x]) . "\t";
于 2012-07-16T07:33:08.827 に答える