将mySQL导出为ex​​cel或csv

我不是PHP专家(仅仅是初学者),但需要一些帮助!

经过几个小时的searchGoogle,尝试了大约100个不同的脚本,我终于find了一个能够满足我需要的东西 – 差不多。

基本上,我的网站有一个标记为“导出到Excel”的button。 访问者站点单击button,下载开始包含指定表中的所有数据。

我在这里find了这个 – PHP代码来将MySQL查询转换为CSV

这正是我想要的除了用户在尝试打开文件时看到以下错误:

错误 – '您尝试打开的文件'export.xls'与文件扩展名指定的格式不同。 打开文件之前,validation该文件是否已损坏并且来自受信任的来源。 我想现在打开文件?

用户点击“是”,文件将打开所有的数据! 辉煌! 除了用户不会打开这个错误的文件。

如果有人知道解决这个问题的方法,我将非常感激。

非常感谢

TT

或者,您可以更改上述解决scheme中的脚本,以返回.csv扩展名的文件。 .csv文件与Excel关联,因此应直接打开。

好的,这是由Excel 2007指定的一个名为Extension Hardening的function导致的。 你可以把它关掉,但只能在客户端完成。 如果您点击“确定”或“是”,文件仍然会打开。 检查这个博客文章了解更多信息。

编辑:这是什么意思是Excel发现该文件是不同types的文件扩展名(指HTML或CSV)指定的文件。 因此,Excel要警告你,这个文件不是它所说的。 除非要在服务器上创build本机Excel文件,否则会提示用户下载它们,除非每个用户都在自己的计算机上closuresExtension Hardening,否则不会获得此错误。

如果您将第一个字母“ID”的文本文件Excel错误地假定您正试图打开SYLK文件。

意思是如果第一行和列的值是“ID”,Excel将抛出这个警告。 只需将其从“ID”更改为其他任何内容。

信用度: http : //alunr.com/excel-csv-import-returns-an-sylk-file-format-error/

Dim objXL As Excel.Application Dim objWkb As Excel.Workbook Set objXL = New Excel.Application 'turn off excel warnings objXL.DisplayAlerts = False 'Open the Workbook Set objWkb = objXL.Workbooks.Open(fpath) 
 functions sendFile($filename,$content_type="application/ms-excel") { header('Content-type: '.$content_type); header('Content-disposition: Attachment; filename=' . $filename); readfile($filename); } 

我有同样的问题,所以我看了下面的链接: 将MySQL查询转换为CSV的PHP代码

我修改了其中一个答案,以使标题工作。

 include('DBFILE.PHP'); $select="SELECT * FROM SOMETable"; $result = mysqli_query($conn, $select); if (!$result) die('Couldn\'t fetch records'); $num_fields = mysql_num_fields($result); //This is what I changed... $headers =""; while ($property = mysqli_fetch_field($result)) { $headers.= $property->name.","; } $headers.="\n"; ////// $fp = fopen('php://output', 'w'); if ($fp && $result) { header('Content-Type: text/csv'); header('Content-Disposition: attachment; filename="export.csv"'); header('Pragma: no-cache'); header('Expires: 0'); fputcsv($fp, $headers); while ($row = $result->fetch_array(MYSQLI_NUM)) { fputcsv($fp, array_values($row)); } die; } 

我testing了它,它的作品就像一个魅力,你只需要添加你的数据库连接或包含你有的db.php文件。

如果您编辑以下行,则可以更改文件的名称

 header('Content-Disposition: attachment; filename="export.csv"'); 

将导出更改为任何你喜欢的名字。