我第一次使用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 CityDeliveryIndicator 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函数在访问之前会回显内容?
答案 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);