Home >Backend Development >PHP Tutorial > PHPExcel读取excel资料

PHPExcel读取excel资料

WBOY
WBOYOriginal
2016-06-13 13:07:54744browse

PHPExcel读取excel文件

????? 之前的博文已经对PHPExcel导出excel文件做了简单的总结,现对他读取excel做以下总结。(对数据量不会很大的建可以采用web直接用此方法读取,如果数据量会很大的话,还是建议web只做上传功能,读取、处理还是放后台吧。PHPExcel还是比较耗费时间、内存的。)

?

实例代码:

?

//首先导入PHPExcel
require_once 'PHPExcel.php';

$filePath = "test.xlsx";

//建立reader对象
$PHPReader = new PHPExcel_Reader_Excel2007();
if(!$PHPReader->canRead($filePath)){
    $PHPReader = new PHPExcel_Reader_Excel5();
    if(!$PHPReader->canRead($filePath)){
        echo 'no Excel';
        return ;
    }
}

//建立excel对象,此时你即可以通过excel对象读取文件,也可以通过它写入文件
$PHPExcel = $PHPReader->load($filePath);

/**读取excel文件中的第一个工作表*/
$currentSheet = $PHPExcel->getSheet(0);
/**取得最大的列号*/
$allColumn = $currentSheet->getHighestColumn();
/**取得一共有多少行*/
$allRow = $currentSheet->getHighestRow();

//循环读取每个单元格的内容。注意行从1开始,列从A开始
for($rowIndex=1;$rowIndex<=$allRow;$rowIndex++){
    for($colIndex='A';$colIndex<=$allColumn;$colIndex++){
        $addr = $colIndex.$rowIndex;
		$cell = $currentSheet->getCell($addr)->getValue();
        if($cell instanceof PHPExcel_RichText)     //富文本转换字符串
			$cell = $cell->__toString();
            
        echo $cell;
    
    }

}

?

?? ?这里需要说明的是上面注释中的“富文本转换字符串”。

???PHPExcel读取EXCEl文件中,如果单元格中的内容有两种字体时,读到的是富文本的对象:

例如:单元格中有内容:“测试1”,其中前半部分的“测试”字体为宋体,后半部分的“1”字体为Calibri,这时候通过

??? $cell = $sheet->getCell($addr)->getValue();

获取单元格的值。并打印:

PHPExcel_RichText Object(
	[_richTextElements:private] => Array
 	(
           	[0] => PHPExcel_RichText_TextElement Object ([_text:private] => 测试)
                     [1] => PHPExcel_RichText_Run Object
                     (
                     	[_font:private] => PHPExcel_Style_Font Object
                               (
                                	[_name:private] => Calibri
                                        [_size:private] => 11
                                        [_bold:private] => 
                                        [_italic:private] => 
                                        [_superScript:private] => 
                                        [_subScript:private] => 
                                        [_underline:private] => none
                                        [_strikethrough:private] => 
                                        [_color:private] => PHPExcel_Style_Color Object
                                        (
                                            [_argb:private] => FF000000
                                            [_isSupervisor:private] => 
                                            [_parent:private] => 
                                            [_parentPropertyName:private] => 
                                        )
                                        [_parentPropertyName:private] => 
                                        [_isSupervisor:private] => 
                                        [_parent:private] => 
                                        [colorIndex] => 8
                                    )
                                    [_text:private] => 1
                                )
                        )
                )

?

可以看到对这样的单元格不能直接读取单元格的文本内容。(注:这里的富文本是我自己的翻译,不知对否)。

另外,读取单元格的函数还有:

//列从0开始,行从1开始

$currentSheet ->getCellByColumnAndRow($colIndex,$rowIndex)->getValue();

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn