2012-12-31 39 views
4
<?php 

error_reporting(E_ALL); 
set_time_limit(0); 

date_default_timezone_set('Europe/London'); 

?> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 

<title>PHPExcel Reader Example #09</title> 

</head> 
<body> 


<?php 

/** Include path **/ 
set_include_path(get_include_path() . PATH_SEPARATOR . '../../../Classes/'); 

/** PHPExcel_IOFactory */ 
include 'C:\webserver\www\Classes\PHPExcel\IOFactory.php'; 


$inputFileType = 'Excel5'; 
// $inputFileType = 'Excel2007'; 
// $inputFileType = 'Excel2003XML'; 
// $inputFileType = 'OOCalc'; 
// $inputFileType = 'Gnumeric'; 
$inputFileName = './sampleData/Book1.xls'; 
$sheetname = 'Data Sheet #3'; 


class MyReadFilter implements PHPExcel_Reader_IReadFilter 
{ 
    public function readCell($column, $row, $worksheetName = '') { 

     if ($row >= 1 && $row <= 1) { 
      if (in_array($column,range('A','A'))) { 
       return true; 
      } 
     } 
     return false; 
    } 
} 

$filterSubset = new MyReadFilter(); 

$objReader = PHPExcel_IOFactory::createReader($inputFileType); 
$objReader->setLoadSheetsOnly($sheetname); 
$objReader->setReadFilter($filterSubset); 
$objPHPExcel = $objReader->load($inputFileName); 
$sheetData = $objPHPExcel->getActiveSheet()->toArray(null,true,true,true); 
var_dump($sheetData); 


?> 
<body> 
</html> 

当运行aboce代码它给我这个输出只想从Excel文件打印单元格数据使用PHPExcel?

array(1) { [1]=> array(1) { ["A"]=> string(6) "ABCDEF" } } 

在上述输出ABCDEF是第一小区的数据。所以我只想要ABCDEF而不是其他的东西,如上所示。

回答

4

这是因为您要求PHPExcel将整个工作表作为数组提供给您。

如果你只是想单元格A1的使用价值:在the documentation

$objPHPExcel->getActiveSheet()->getCell('A1')->getValue(); 

代替

$objPHPExcel->getActiveSheet()->toArray(null,true,true,true); 

更多关于这一点,在这种情况下,文件 “PHPExcel开发商documentation.pdf”。

然后,您也可以完全删除读取过滤器。单元格以懒惰的方式读取,所以如果您只是直接访问单元格A1,则不会使用读取过滤器保存任何内容。

+0

字符串(6)“ABCDEF” 这个输出我通过使用上面的代码行得到了。 –

+0

是的,很好,不是吗? :) – AndreKR

+0

但我只想要ABCDEF –

0

包括'C:\webserver\www\Classes\PHPExcel\IOFactory.php';

这个文件包含了本文件中包含的文件。