-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 能够读取您的表格,我建议您将其编写为 CSV 文件,而数据周围没有 HTML 正文。
  2. 不要使用制表符作为分隔符。而是使用系统区域设置中的字符集(通常是,;)。
  3. 我不确定这是故意的,但是您逃脱了\tand的反斜杠\n。因此,这些不会代表制表符或换行符。
  4. 用于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 回答