在excel文件中导出记录

时间:2011-11-10 16:08:18

标签: php mysql

我创建了一个Web应用程序,我想添加一个功能,例如用户可以导出选定的记录......

Check Box   Name    Email

            Sumit   sumit@gmail.com
            Karan   karan@gmail.com

我想将此记录导出到excel文件中,但只应导出所选记录。

提前致谢

4 个答案:

答案 0 :(得分:6)

无需下载外部库 - 您需要的所有内容都已内置到PHP中。

步骤:

  1. 在php中查询以获取要输出的行
     您可以使用SELECT * FROM table WHERE id IN (1,2,...)
  2. 使用mysql_fetch_array()mysql_fetch_assoc()一次获取一行
  3. 使用fputcsv()将它们输出到以csv结尾的文件 - 这将正确地转义您的数据
  4. http://www.php.net/manual/en/function.mysql-fetch-array.php
    http://php.net/manual/en/function.fputcsv.php

    Excel将能够读取该文件。

    覆盖fputcsv的默认值以使用制表符分隔符,Excel将更容易读取文件。如果使用逗号(默认值),则可能需要选择逗号作为Excel导入的分隔符。

    这是一个工作示例,假设您已经设置了行:

    $rows; // predefined
    $filename = 'webdata_' . date('Ymd') . '.csv';
    
    header("Content-Disposition: attachment; filename=\"$filename\"");
    header("Content-Type: application/octet-stream"); 
    // that indicates it is binary so the OS won't mess with the filename
    // should work for all attachments, not just excel
    
    $out = fopen("php://output", 'w');  // write directly to php output, not to a file
    foreach($rows as $row)
    {
      fputcsv($out, $row);
    }
    fclose($out);
    

答案 1 :(得分:1)

您可以安装和使用非常好的PHP exel库来导入exel文件以及在exel中导出数据。

更多信息: http://phpexcel.codeplex.com/

否则问题本身就有点模糊,所以我只能说。 :/

答案 2 :(得分:0)

如果您将数据作为CSV发送到浏览器(即implode()结果集数组中的每个条目都使用\ t并用\ n分隔每一行,Excel可以轻松地将其转换为文档时可以使用的内容装了。

但请注意,您必须告诉浏览器它正在加载的文档是一个excel文件,因此它知道使用excel加载文件。通过提供内容类型和内容处置标题来执行此操作:

header('Content-type: application/vnd.ms-excel');
header("Content-Disposition: attachment; filename=exportExcel.xls");

请确保在发送CSV文本之前调用header()函数。

注意:我选择\ t(制表符)来分隔每个字段而不是逗号,因为根据我的经验,它们会引起问题,因为字段中包含逗号可能很常见。 ..但也许不是你的特殊情况。

答案 3 :(得分:0)

假设您的mysql数据库与您的Web主机位于同一服务器上,那么您应该能够在mysql中使用“select into outfile”方法。 http://dev.mysql.com/doc/refman/5.1/en/select-into.html

您可以使用以下语法创建csv文件(在excel中打开):

SELECT * FROM people INTO OUTFILE '/www/your/output/directory/output.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';

然后你可以让人们使用php下载文件:

header("Content-type: application/csv");
header("Content-Disposition: attachment; filename=/www/your/output/directory/output.csv");
header("Pragma: no-cache");
header("Expires: 0");

这最后一部分来自其他帖子 - > create csv file