PHP 使用存储在服务器上的 XML 文件创建 excel 以供下载


PHP Using XML file stored on server to create excel for download

Gday,基本上我正在做的是创建一个带有Db信息的XML文件。我正在使用PHP创建XML文件并将其存储在服务器上。我必须存储 XML,因为它基于特定的时间段。我不能使用任何外部库或类,无论如何我都不需要一个,很可能是代码错误。所以这是生成的XML标头和基本结构,它总共有6张纸。

<?xml version="1.0" encoding="UTF-8"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:o="urn:schemas-microsoft-com:office:office"
 xmlns:x="urn:schemas-microsoft-com:office:excel"
 xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:html="http://www.w3.org/TR/REC-html40">
<Worksheet ss:Name="Report Page 1">
<Table>
<Row><Cell><Data ss:Type="String">col 1</Data></Cell><Cell><Data ss:Type="String">Col 2</Data></Cell></Row>
</Table>
</Worksheet>

坤 1 坤 2

这是从链接调用的 PHP

<?php
$dir = "reports/xls/";
$filename = 'Summary.xml';
header("Content-type: application/vnd.ms-excel");
header("Content-Length: " . filesize($dir.$filename));
header("Content-Disposition: attachment; filename=$filename");
header("Expires: 0");
header("Cache-Control: private");
header("Pragma: cache");
    $Dfile = file_get_contents($dir.$filename);
    print $Dfile;
?>

我得到的只是一个带有工作表 1 的空白 excel 文件,没有数据。如果我使用相同的技术但动态生成文件,则报告看起来很棒,所有数据都存在。当然,PHP 标头略有不同。

header("Content-type: application/vnd.ms-excel");
header("Content-Length: " . strlen($excelxml));
header("Content-Disposition: attachment; filename={$excelxml}.xml");
header("Expires: 0");
header("Cache-Control: private");
header("Pragma: cache");
print $excelxml;

$excelxml只是一个包含生成数据的字符串。任何帮助将不胜感激,我不认为CSV是一种选择,我认为它不能创建多个工作表。我注释掉了内容类型/处置标头以查看源代码,除了服务器上XML文件中的代码在顶部有一个额外的空间,在.

我在第一个文件中有两个PHP块,导致空格或换行问题。

 $dir = "reports/xls/";
 $filename = 'Summary.xml';
 if(!file_exists($dir.$filename)) die("Upload the file");

或者通过FireBug或其他应用程序观看响应标题以进行定位:

"Content-Length: " . filesize($dir.$filename))

如果将重新运行 0 - 文件不存在

尝试关闭 xml 脚本末尾<Workbook>标记