日期:2014-05-17 浏览次数:20713 次
????? 之前的博文已经对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] =>
)