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>
标记