将mySQL导出为excel或csv
我不是PHP专家(仅仅是初学者),但需要一些帮助!将mySQL导出为excel或csv
经过几小时搜索谷歌并尝试了大约100个不同的脚本,我终于找到了一个能够满足我需要的东西 - 差不多。
基本上,我的网站有一个标记为“导出到Excel”的按钮。访问者点击网站按钮,下载开始包含来自指定表格的所有数据。
我发现这个在这里 - PHP code to convert a MySQL query to CSV
这不正是我想要的只是用户会看到试图打开文件时出现以下错误:
错误 - “您要的文件打开“export.xls”的格式与文件扩展名指定的格式不同。在打开文件之前,验证该文件是否已损坏并且来自受信任的来源。我想现在打开文件?'
用户单击'是',文件将打开所有数据!辉煌!除用户将不会打开此错误的文件。
如果有人知道解决此问题的方法,我将不胜感激。
非常感谢
TT
或者,您可以在上述解决方案中更改脚本以返回.csv扩展名的文件。 .csv文件与Excel关联,因此应直接打开。
好了,这导致从Excel 2007中指定的功能,称为扩展硬化。您可以关闭它,但只能在客户端完成。如果点击“确定”或“是”,文件仍然会打开。有关更多信息,请检查this blog post。
编辑:这是什么意思是Excel发现该文件是不同类型的(如HTML或CSV)文件扩展名指定的内容。因此,Excel想警告你,这个文件不是它所说的。除非要在服务器上创建本机Excel文件,否则会提示用户下载它们,除了每个用户在其自己的计算机上关闭Extension Hardening之外,没有绕过此错误的办法。
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);
}
,如果你犯了一个文本文件,Excel中不正确 假定你试图打开一个SYLK文件的第一个字母“ID”。
含义如果第一行&列值为“ID”,Excel将抛出此警告。只需将其从“ID”更改为其他任何内容即可。
信用:http://alunr.com/excel-csv-import-returns-an-sylk-file-format-error/
我有同样的问题,所以我看了看下面的链接:PHP code to convert a MySQL query to CSV
我修改了答案,以获得头工作之一。
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;
}
我测试了这一点,它的工作原理就像一个魅力,你只需要添加你的数据库连接,或者包括您有db.php中的文件。
如果编辑下面一行
header('Content-Disposition: attachment; filename="export.csv"');
更改出口什么都命名你喜欢,你可以更改文件的名称。
是您使用Office 2007的用户吗?你有没有尝试过头(“ContentType:application/vnd.ms-excel”)? – Perpetualcoder 2009-06-10 17:46:04
@TheTub检查出http://stackoverflow.com/questions/976483/exporting-gridview-to-excel-in-web-app/976566#976566为另一个线程处理这个相同的问题。 – 2009-06-10 17:48:24
- 是的标题已经说明了内容类型。 – TheTub 2009-06-10 18:11:09