本文介绍了phpexcel类库读取excel文件的方法,对phpexcel类库不熟悉的朋友,可以阅读下《phpexcel中文帮助手册》中的内容,具体实例大家可以phpexcel快速开发指南中的相关例子。
php phpexcel读取excel文件
之前对phpexcel导出excel文件做过介绍,现在对使用phpexcel类库读取excel文件的方法做下总结。
对数据量不会很大的建可以采用web直接用此方法读取,如果数据量会很大的话,还是建议web只做上传功能,读取、处理还是放后台吧。
phpexcel还是比较耗费时间、内存的。
对phpexcel类库不熟悉的朋友,可以阅读下《phpexcel中文帮助手册》中的内容,具体实例大家可以phpexcel快速开发指南中的相关例子。
例子,php读取excel文件。
复制代码 代码示例:
//导入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();
以上就是phpexcel读取excel文件的方法,希望对大家有所帮助。