从URL读取XML时出现PHPExcel工厂错误

时间:2014-05-23 19:20:48

标签: php xml phpexcel

如何从URL XML数据创建XML阅读器? 我从URL向PHPExcel工厂identify()提供有效的XML数据,但该脚本会触发错误:

  

(!)致命错误:未捕获的异常' PHPExcel_Reader_Exception'同   消息'在C:\ wamp \ www \ project \ Classes \ PHPExcel \ Reader \ Excel2007.php中   在第82行

     

(!)PHPExcel_Reader_Exception:无法打开   读!文件不存在。在   第82行的C:\ wamp \ www \ project \ Classes \ PHPExcel \ Reader \ Excel2007.php

$url = "http://www.w3schools.com/xml/note.xml";
$xml = simplexml_load_file($url); //OR $xml = simplexml_load_string(file_get_contents($url));
$inputFileType = PHPExcel_IOFactory::identify($xml); // ERROR

更新

$dom = new DOMDocument();
$dom->load($url);
$fileName = 'filename.xml';
$xml = $dom->save($fileName);
$inputFileType = PHPExcel_IOFactory::identify($xml);
  

(!)致命错误:未捕获的异常' PHPExcel_Reader_Exception'同   消息'无法打开116752进行阅读!文件不存在。'在   第82行的C:\ wamp \ www \ project \ Classes \ PHPExcel \ Reader \ Excel2007.php

     

(!)PHPExcel_Reader_Exception:无法打开116752进行阅读!文件   不存在。

2 个答案:

答案 0 :(得分:2)

PHPExcel附带的XML Reader(PHPExcel_Reader_Excel2003XML)不适用于任何XML文件:需要极高程度的机器智能才能将任意结构的文件解析为确定的结构电子表格如果不编写自己的代码,那么可以使用XML文件的任何结构并将其导入Excel文档而无需理解XML结构的通用XML Reader是不可能的。

MS Excel 2003支持一种名为SpreadsheetML的格式,它是一个zip压缩的XML文件,具有已定义的结构,并且 - 虽然格式很少使用 - 但PHPExcel_Reader_Excel2003XML支持使用该格式编写的电子表格文件格式。 XMLReader.php文件夹中的/Examples文件演示了如何读取SpreadsheetML文件。

可以找到SpreadsheetML的详细信息here

修改

另请注意 所有 PHPExcel读者需要将文件名作为参数,none将接受任何格式的原始数据或任何PHP对象

答案 1 :(得分:1)

PHPExcel是读取Excel文件,而不是XML。尝试使用SimpleXML扩展。

<强>更新

第82行的C:\ wamp \ www \ project \ Classes \ PHPExcel \ Reader \ Excel2007.php说:

if (!file_exists($pFilename)) {
    throw new PHPExcel_Reader_Exception("Could not open " . $pFilename . " for reading! File does not exist.");
}

这意味着它希望$pFilename指向文件系统上的实际文件。尝试在某处保存$xml数据并将文件名提供给PHPExcel_IOFactory::identity()