我创建了一个Web应用程序,我想添加一个功能,例如用户可以导出选定的记录......
Check Box Name Email
Sumit sumit@gmail.com
Karan karan@gmail.com
我想将此记录导出到excel文件中,但只应导出所选记录。
提前致谢
答案 0 :(得分:6)
无需下载外部库 - 您需要的所有内容都已内置到PHP中。
步骤:
SELECT * FROM table WHERE id IN (1,2,...)
mysql_fetch_array()
或mysql_fetch_assoc()
一次获取一行fputcsv()
将它们输出到以csv结尾的文件 - 这将正确地转义您的数据 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