2011-11-10 68 views
1

我创建了一个Web应用程序,我想补充像用户功能可以将所选记录导出...输出记录文件

Check Box Name Email 

      Sumit [email protected] 
      Karan [email protected] 

我想这个记录导出到Excel文件,但只有应该导出选定的记录。

在此先感谢

+2

您可以使用PHPExcel http://phpexcel.codeplex.com/,但您的问题是太位开放... – Molochdaa

+0

可能重复的[导出mysql结果为Excel](http://stackoverflow.com/questions/1475441/export-mysql-result-to-excel) – hakre

+0

@hakre - 不要复制到该问题。这是针对特别复杂的脚本。 – evan

回答

6

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

步骤:

    在PHP中得到你想要的输出
  1. 待办事项查询可以使用SELECT * FROM table WHERE id IN (1,2,...)
  2. 使用mysql_fetch_array()mysql_fetch_assoc()同时获得行一个
  3. 使用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); 
+0

非常感谢你我会检查它.. – SB24

+0

在我多年的PHP中,我从来没有真正使用fputcsv--通常是因为我通常避免创建物理文件,但这也许是很好的解决方案。但是,我不认为excel使用制表符会有问题,而不是逗号。它应该自动检测分隔符,所以我不希望需要进行配置更改。但是,里程可能会有所不同。非常好的答案,但:-) – WhiskeyTangoFoxtrot

+1

Excel使用标签更好。有点奇怪,因为csv代表逗号分隔值。看到这个例子,不需要先输出到文件。直接输出到php标准输出。 – evan

1

您可以安装和使用非常漂亮的PHP EXEL库导入EXEL EXEL文件以及出口数据。

此处了解详情: http://phpexcel.codeplex.com/

否则这个问题本身是一个比较含糊所以这就是我能说的。 :/

+0

非常感谢您的信息 – SB24

0

如果您以CSV格式将数据发送到浏览器(例如,implode()将结果集数组中的每个条目与\ t分开并将每行与\ n分隔),Excel可以轻松地将其转换为可以使用的东西当文档被加载时。

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

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

请确保您拨打的报头()函数您发送CSV'd文本之前。

注:我选择\ t(制表符)分隔每个字段,而不是逗号,因为在我的经验,他们已经造成的问题,因为它可能是常见的一个字段包含在它的逗号...但也许不在你的特定情况下。

+0

作为一个说明,这将不会有任何花哨的格式或表格装箱。卡米尔的图书馆可能会提供。我的方法只是做一个简单的直接导出。 – WhiskeyTangoFoxtrot

+0

非常感谢你 – SB24

+0

不客气!欢迎来到stackoverflow - 请记住选择好的答案以及接受的答案。 :-) – WhiskeyTangoFoxtrot

0

假设你的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