【问题标题】:php exporting xls: the file format and extension of don't matchphp导出xls:文件格式和扩展名不匹配
【发布时间】:2019-01-27 17:02:57
【问题描述】:

我正在使用此代码导出 xls:

<?php
header("Content-Type: application/vnd.ms-excel");
header("Content-Disposition: inline; filename=filename.xls");
?>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
my export
</body>
</html>

但是当我打开它时,我得到:
文件格式和扩展名不匹配。该文件可能已损坏或不安全。除非你相信它的来源,否则不要打开它。还是要打开它吗?
有办法避免吗?

【问题讨论】:

  • 您可能需要为此目的使用库。尝试查看PhpSpreadsheet。我之前尝试过,我相信导出的文件不会显示该警告。
  • 您已将内容嵌入到 html 中。删除 html 标签。
  • @uom-pgregorio 我宁愿避免使用外部库,
  • @symcbean 我尝试删除 标签但没有用,如果您的意思是所有 html 标签,那么我该如何格式化表格?
  • 您的内容还包含 HTML 标签??????!!!你有很多事情要做。

标签: php excel xls


【解决方案1】:

您所拥有的是 HTML,而不是 Excel 文件。正如 Excel 所说,文件格式和扩展名不匹配。如果您想避免出现警告消息,请将其保存为 HTML 文件并从 Excel 中打开。

<?php
header("Content-Disposition: inline; filename=filename.html");
?>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
my export
</body>
</html>

或输出不同的文件格式,例如 CSV。很简单。

<?php
$my_data = [
    [1, 2, 3, 4, 5, 7],
    [9, 8, 7, 6, 5, 3],
];
header("Content-Type: text/csv");
header("Content-Disposition: attach; filename=filename.csv");
$h = fopen("php://output", "w");
foreach($my_data as $data) {
    fputcsv($h, $data);
}
fclose($h);

【讨论】:

  • 所以要使用 .xls 扩展名导出它,我需要一个用于以 excel 格式编写的库?
  • 是的。但是,除非您需要公式或格式,否则您不会从 XLS 中获得无法从 CSV 获得的任何东西。
猜你喜欢
  • 1970-01-01
  • 2020-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-03
  • 1970-01-01
  • 2014-11-05
  • 2014-11-08
相关资源
最近更新 更多