-2

mysqlテーブルをExcel形式にエクスポートする必要があります。試しましたが、正しい形式を取得できませんでした。誰かが私がこれを修正するのを手伝ってくれますか?以下にphp関数を添付しました。

<body>
<?php

function export_excel_csv()
{
    $conn = mysql_connect("localhost","itsup739_uaquiz","itsup739_uaquiz");
    $db = mysql_select_db("itsup739_uaquizDB",$conn);

    $sql = "SELECT * FROM results";
    $rec = mysql_query($sql) or die (mysql_error());

    $num_fields = mysql_num_fields($rec);

    for($i = 0; $i < $num_fields; $i++ )
    {
        $header .= mysql_field_name($rec,$i)."\\t";
    }

    while($row = mysql_fetch_row($rec))
    {
        $line = '';
        foreach($row as $value)
        {                                           
            if((!isset($value)) || ($value == ""))
            {
                $value = "\\t";
            }
            else
            {
                $value = str_replace( '"' , '""' , $value );
                $value = '"' . $value . '"' . "\\t";
            }
            $line .= $value;
        }
        $data .= trim( $line ) . "\\n";
    }

    $data = str_replace("\\r" , "" , $data);

    if ($data == "")
    {
        $data = "\\n No Record Found!\n";                       
    }

    header("Content-type: application/octet-stream");
    header("Content-Disposition: attachment; filename=reports.xls");
    header("Pragma: no-cache");
    header("Expires: 0");
    print "$header\\n$data";
    //echo $header;
}
export_excel_csv();
?>

リンクをたどって出力を確認してください。

http://itsupportsrilanka.com/uaquiz/admin/export.php

4

3 に答える 3

4

実際、Excel にエクスポートするのは本当に簡単です。

次のような通常の HTML テーブルとしてコンテンツを作成するだけです。

$contents = '<table>
  <tr>
    <td>Row 1</td>
    <td>Row 2</td>
  </tr>
  <tr>
    <td>bLAH BLAH</Td>
    <td>Blah Blah</td>
  </tr>
</table>';

ヘッダーを Excel ドキュメントとして設定し、テーブルを出力します。

$filename = 'my_excel_file.xls';
header( 'Content-type: application/ms-excel' );
header( 'Content-Disposition: attachment; filename=' . $filename );

echo $contents;

それだけです。

于 2012-10-23T10:02:33.813 に答える
0
  1. Excel がテーブルを読み取れるようにするには、データの周囲に HTML 本文を含めずに CSV ファイルとして記述することをお勧めします。
  2. タブをセパレータとして使用しないでください。代わりに、システムのロケール設定の文字セット (通常は,または;) を使用してください。
  3. これが意図的かどうかはわかりませんが、\tandのバックスラッシュをエスケープしまし\nた。そのため、これらはタブや改行を表していません。
  4. 行をファイル (または stdout) に書き込むために使用fputcsv()します。既定では、Excel が認識する CSV 形式が使用されます。
于 2012-10-23T09:56:28.580 に答える
0

コードに多くのエラーが含まれています。

  1. <body>タグを先頭に付けると、警告が発生しますCannot modify header information。最初の行自体で出力が開始されるため、ヘッダーは設定されません。
  2. csvのコンテンツタイプはContent-type: text/csv
于 2012-10-23T10:03:27.640 に答える