我创建了一个Web应用程序,我想补充像用户功能可以将所选记录导出...输出记录文件
Check Box Name Email
Sumit [email protected]
Karan [email protected]
我想这个记录导出到Excel文件,但只有应该导出选定的记录。
在此先感谢
我创建了一个Web应用程序,我想补充像用户功能可以将所选记录导出...输出记录文件
Check Box Name Email
Sumit [email protected]
Karan [email protected]
我想这个记录导出到Excel文件,但只有应该导出选定的记录。
在此先感谢
无需下载外部库 - 您所需的所有内容都已内置到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);
非常感谢你我会检查它.. – SB24
在我多年的PHP中,我从来没有真正使用fputcsv--通常是因为我通常避免创建物理文件,但这也许是很好的解决方案。但是,我不认为excel使用制表符会有问题,而不是逗号。它应该自动检测分隔符,所以我不希望需要进行配置更改。但是,里程可能会有所不同。非常好的答案,但:-) – WhiskeyTangoFoxtrot
Excel使用标签更好。有点奇怪,因为csv代表逗号分隔值。看到这个例子,不需要先输出到文件。直接输出到php标准输出。 – evan
您可以安装和使用非常漂亮的PHP EXEL库导入EXEL EXEL文件以及出口数据。
此处了解详情: http://phpexcel.codeplex.com/
否则这个问题本身是一个比较含糊所以这就是我能说的。 :/
非常感谢您的信息 – SB24
如果您以CSV格式将数据发送到浏览器(例如,implode()将结果集数组中的每个条目与\ t分开并将每行与\ n分隔),Excel可以轻松地将其转换为可以使用的东西当文档被加载时。
但是请注意,您必须告诉浏览器它正在加载的文档是一个excel文件,因此它知道使用excel来加载文件。通过提供内容类型和内容处置头,像这样做:
header('Content-type: application/vnd.ms-excel');
header("Content-Disposition: attachment; filename=exportExcel.xls");
请确保您拨打的报头()函数您发送CSV'd文本之前。
注:我选择\ t(制表符)分隔每个字段,而不是逗号,因为在我的经验,他们已经造成的问题,因为它可能是常见的一个字段包含在它的逗号...但也许不在你的特定情况下。
作为一个说明,这将不会有任何花哨的格式或表格装箱。卡米尔的图书馆可能会提供。我的方法只是做一个简单的直接导出。 – WhiskeyTangoFoxtrot
非常感谢你 – SB24
不客气!欢迎来到stackoverflow - 请记住选择好的答案以及接受的答案。 :-) – WhiskeyTangoFoxtrot
假设你的mysql数据库是同一台服务器上的虚拟主机上,那么你就应该能够使用“选择INTO OUTFILE “在mysql中的方法。 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
您可以使用PHPExcel http://phpexcel.codeplex.com/,但您的问题是太位开放... – Molochdaa
可能重复的[导出mysql结果为Excel](http://stackoverflow.com/questions/1475441/export-mysql-result-to-excel) – hakre
@hakre - 不要复制到该问题。这是针对特别复杂的脚本。 – evan