PHPExcel将Excel内容转储到屏幕上

时间:2013-01-17 01:02:42

标签: php phpexcel

我第一次使用PHPExcel。我刚刚写了一个基本的代码片段来读取我的一个Excel文件。我想加载文件,遍历每一行并处理其内容。但是,加载文件的功能似乎将其内容转储到屏幕上。

我的代码段是:

      include 'lib/Classes/PHPExcel/IOFactory.php';
      $dest = "uploads/";
      $excel = "2012-12-STANDARD.xls";

      $objPHPExcel = PHPExcel_IOFactory::load($dest.$excel);

运行此代码时,工作表中的数据已在屏幕上回显两次。首先,像常规回声一样,第二个是var_dump。

以下是屏幕输出的示例摘录:

  

DOM元素:HTML DOM元素:BODY DOM元素:P START OF   段落:段落结束:FLUSH CELL:A1 =>输入ZipCode City   州郡区域城市类型城市阿里亚斯简称CityAliasName   纬度经度TimeZone海拔县FIPS DayLightSaving   PreferredLastLineKey ClassificationCode MultiCounty StateFIPS   CityStateKey CityAliasCode PrimaryRecord CityMixedCase   CityAliasMixedCase StateANSI CountyANSI FacilityCode   CityDeliveryIndi​​cator CarrierRouteRateSortation FinanceNumber   UniqueZIPName D 18540 ......

     

数组1 =>       排列         'A'=> string'类型ZipCode城市州县AreaCode CityType CityAliasAbbreviation CityAliasName纬度经度TimeZone   Elevation CountyFIPS DayLightSaving PreferredLastLineKey   ClassificationCode MultiCounty StateFIPS CityStateKey CityAliasCode ........'...(长度= 4573)

我在这里做错了吗?为什么load函数在访问之前会回显内容?

3 个答案:

答案 0 :(得分:3)

问题的原因是IOFactory静态load方法无法正确确定文件的格式。你可能根本不想使用它,因为根据文档:

  

虽然易于在代码中实现,但您无需担心   关于文件类型; 这不是加载a的最有效方法   文件;并且它缺乏以任何方式配置加载器的灵活性   在实际将文件读入PHPExcel对象之前。

要成功加载文件,您可以实例化显式指定格式的Reader。对于Excel 2007格式的文件,它将是:

$xl_reader = PHPExcel_IOFactory::createReader('Excel2007');
$xl = $xl_reader->load("/tmp/yourfile.xls");

您还可以使用Reader的canRead()方法确定您创建的读者是否可以加载指定的文件。

$xl_reader = PHPExcel_IOFactory::createReader('Excel2007');
if ($xl_reader->canRead('/tmp/yourfile.xls')) {
    echo "It's a success! Loading the file..."; 
    $xl = $xl_reader->load('/tmp/yourfile.xls');
    ...
} else {
    echo "Cannot read the file.";
    ...
}

答案 1 :(得分:1)

该代码正在接收HTML Reader,它仍然在代码中有一些我的诊断(mea culpa)...如果您编辑文件Classes / PHPExcel / Reader / HTML.php并注释掉每一行包含echo或var_dump语句,然后它应该消除问题。

巧合的是,这是我昨晚实际工作的事情。

然后你也可以要求提供该文件的人在将来为你提供一个正确的.xls文件,而不是一个扩展名为.xls但包含html标记而不是格式正确的BIFF文件的文件。 / p>

答案 2 :(得分:0)

尝试将PHPExcel添加到PHP包含路径。

  set_include_path(get_include_path().PATH_SEPARATOR.'lib/Classes/PHPExcel');
  include 'lib/Classes/PHPExcel/IOFactory.php';
  $dest = "uploads/";
  $excel = "2012-12-STANDARD.xls";

  $objPHPExcel = PHPExcel_IOFactory::load($dest.$excel);