我不是PHP专家(仅仅是初学者)但需要一些帮助!
经过几个小时的搜索谷歌并尝试了大约100种不同的剧本,我终于找到了一个能满足我需要的东西 - 差不多。
基本上,我的网站上有一个标记为“导出到Excel”的按钮。访问者到站点单击按钮,下载开始包含指定表中的所有数据。
我在这里找到了这个 - PHP code to convert a MySQL query to CSV
这正是我想要的,除了用户在尝试打开文件时看到以下错误:
错误 - '您尝试打开的文件'export.xls'的格式与文件扩展名指定的格式不同。在打开文件之前,请验证文件是否已损坏且是否来自受信任的源。你想现在打开文件吗?'
用户点击“是”,文件将打开并显示所有数据!辉煌!除非用户不会使用此错误打开文件。
如果有人知道解决这个问题的方法,我将非常感激。
非常感谢
TT
答案 0 :(得分:5)
或者,您可以更改上述解决方案中的脚本以返回扩展名为.csv的文件。 .csv文件与Excel关联,因此它们应该直接打开。
答案 1 :(得分:2)
好的,这是由Excel 2007指定的名为Extension Hardening的功能产生的。您可以将其关闭,但这只能在客户端完成。如果单击“确定”或“是”,则文件仍应打开。查看this blog post了解详情。
编辑:这意味着Excel发现该文件与文件扩展名指定的文件类型不同(例如HTML或CSV)。因此,Excel希望警告您此文件不是它所说的。除非您要在服务器上创建本机Excel文件,然后提示用户下载它们,否则无法解决此错误,除非每个用户在自己的计算机上关闭“扩展强化”。
答案 2 :(得分:1)
如果您错误地将文本文件Excel的第一个字母“ID” 假设您正在尝试打开SYLK文件。
如果第一行和&列值为“ID”,Excel将抛出此警告。只需将其从“ID”更改为其他任何内容。
信用:http://alunr.com/excel-csv-import-returns-an-sylk-file-format-error/
答案 3 :(得分:0)
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)
答案 4 :(得分:0)
functions sendFile($filename,$content_type="application/ms-excel") {
header('Content-type: '.$content_type);
header('Content-disposition: Attachment; filename=' . $filename);
readfile($filename);
}
答案 5 :(得分:0)
我遇到了同样的问题所以我查看了以下链接: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"');
将导出更改为您喜欢的名称。