xls文件php下载的格式与文件扩展名指定的格式不同

凯文·罗弗斯(Kevin Rovers)

我在用PHP将XML转换为XLS代码时遇到了麻烦。
我有将MySql数据导出到XML的PHP​​代码,也有将XML写入XLS的代码。
这一切都很好,除了当我打开xls文件时,我得到一个错误:

“您尝试打开的文件格式与文件扩展名指定的格式不同。打开文件之前,请确保该文件未损坏且来自受信任的来源。要立即打开文件吗?”

我的代码:

<?php
$file = 'filename';
$url = "$file.xml"; // from xml file
header( "Content-Type: application/vnd.ms-excel" );
header( "Content-disposition: attachment; filename=$file.xls" ); // to xls file

if (file_exists($url)) {
    $xml = simplexml_load_file($url);

    echo 'Voornaam'."\t" . 'Achternaam'."\t" . 'Geslacht'."\t" . 'Instrument'."\t\n";
    foreach($xml->lid as $lid)
    {
        echo $lid->voornaam."\t" . $lid->achternaam."\t" . $lid->geslacht."\t" . $lid->instrument."\n";
    }
}
?>

我发现这与MIME_Types
https://filext.com/faq/office_mime_types.php有关

header("Content-Type: application/vnd.ms-excel");是旧版本的Excel中。但是,当我使用xlsx类型时,该文件将完全无法打开。

就像我说的那样,此代码运行良好,将xls格式的Excel文件下载到我的计算机上。但是,如何在没有错误的情况下打开它呢?

如果有人知道如何以该格式打开文件,我也想将文件升级为xlsx格式。

皮斯克沃离开了大楼

好吧,您的标头文件名都说“这是XLS文件”-并非如此,它实际上是TSV文件(制表符分隔值)。是的,该消息是准确的:文件扩展名具有误导性。

要编写实际有效的XLS(或XLSX),最简单的方法是使用为您执行此操作的库-这两种格式都是复杂且棘手的。使用PhpExcel(示例代码取得了最佳效果

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

当我从使用Java的文件夹下载Excel时,出现此错误“ .xls文件的格式和扩展名不匹配。该文件可能已损坏”

如何修复文件格式和扩展名不匹配?

VSCode:禁用特定文件(或扩展名)的格式

检测给定文件类型的扩展名格式

PHP导出XLS:文件格式和扩展名不匹配

递归文件搜索指定扩展名

文件格式和filename.xls扩展名不匹配。该文件可能已损坏且不安全

laravel检查上传格式的文件扩展名

QFileSystemModel setNameFilter格式的文件不带扩展名

下载带有扩展名的文件

有什么方法可以抑制“以不同于文件扩展名指定的格式”的Excel 2007警告?

如何允许以不同的扩展名加载php文件?

PHPExcel文件无法打开,因为文件格式或文件扩展名无效

JSON导入/导出格式的文件扩展名

如何将扩展名附加到具有特定文件名格式的文件

删除php文件扩展名以及目录格式的_GET参数

文件扩展名不能以ASP.NET 3.5格式下载

如果文件扩展名是.xls,则MsgBox

PHP文件上传仅允许指定的扩展名

文件格式-如何打开此扩展名

文件格式或文件扩展名无效

以php格式运行扩展名较少的文件

HttpRequest文件下载下载没有扩展名的文件

文件格式与文件扩展名不同吗?

按格式而不是按扩展名检查文件

由于文件格式或扩展名无效,无法在网页中打开下载的文件嵌入文件链接

ASP.NET 将转发器导出到 excel,打开 excel 文件时出现错误“'RepeaterExport.xls' 的文件格式和扩展名不匹配

从 DataFrame 创建 excel 文件并允许在烧瓶中下载,错误:文件格式/扩展名无效

如何配置黑色以对不同的文件扩展名使用不同的格式规则?