如何用PHP读取excel文件内容、获取单元格数据

码农公社  210.net.cn   210= 1024  10月24日一个重要的节日--码农(程序员)节

涉及相关知识点:

①PHPExcel 是用来操作Office Excel 文档的一个PHP类库,它基于微软的Openxml标准和PHP语言。可以使用它来读取、写入不同格式的电子表格。

该类可上网搜索"PHPExcel"即可寻获。一般会下载到一个名为“PHPExcel-1.x.zip"压缩包,将其解压缩,截图如下:

phpexcel.jpg

我们只需要将Class、Documentation、Examples 三个文件夹拷贝到自己的项目下即可。

②time() 返回当前时间的秒数的函数,用来获取当前的系统时间

③require_once 为了避免重复加载文件即加载文件一次

④array() 创建数组 

⑤memory_get_usage() php内置函数能返回当前分配给PHP脚本的内存量,使用它来调试PHP代码性能

⑥var_dump() 用来打印数组,或者输出字符串

php读取excel文件,并进行相应处理的具体方法

代码示例如下:

<?php

 header('Content-type: text/html; charset=UTF8');  

 //"acc"这个函数是我用来计算每列的列值的,将每列的"字母组合"计算总的Ascii值,以便得到待操作的Excel的所有列。为什么要写这样一个小函数?因为我发现比如要输出Excel的“A“列至“DE“列的话 用 for ($column = 'A'; $column <= 'DE'; $column++)  只能输出到“D”列!!!。所以我写了“acc”这个函数,for ($column ='A';  acc($column) <= acc('DE'); $column++) 就可以获得A~DE的所有列值!

function acc($a)

{

 

$acc=0;


for($i=0;$i<strlen($a);$i++){

$acc+=ord($a[$i]);

 

}

return $acc;

}


 


$fileName = "excel.xls";

if (!file_exists($fileName)) {


    exit("该文件".$fileName."不存在");


}


$startTime = time(); //返回当前时间的Unix 时间戳


require_once 'Classes/PHPExcel/IOFactory.php';


$objPHPExcel = PHPExcel_IOFactory::load($fileName);


//获取sheet表格数目


$sheetCount = $objPHPExcel->getSheetCount();


//默认选中sheet0表


$sheetSelected = 0;$objPHPExcel->setActiveSheetIndex($sheetSelected);


//获取表格行数


$rowCount = $objPHPExcel->getActiveSheet()->getHighestRow();


//获取表格列数


$columnCount = $objPHPExcel->getActiveSheet()->getHighestColumn();


echo "<div>Sheet Count : ".$sheetCount."  行数: ".$rowCount."列数:".$columnCount."</div>";


$dataArr = array();


 

/* 循环读取每个单元格的数据 */


//行数循环

$h=1;

echo "<table border=1>";

for ($row = 1; $row <= $rowCount; $row++)

{

//列数循环 , 列数是以A列开始

for ($column ='A';  acc($column) <= acc($columnCount); $column++)

  {

      //列头

     $SheelTitle[] = $objPHPExcel->getActiveSheet()->getCell($column.$h)->getValue();

                                     //列值

     $dataArr[] = $objPHPExcel->getActiveSheet()->getCell($column.$row)->getValue();

   

}

$endTime = time();

            //输出某行的标题和所有列

     //输出标题

echo " <tr>";

for($i=0;$i<count($SheelTitle);$i++)

{

echo "<td>$SheelTitle[$i]</td>";

}

echo "</tr> ";

  //输出列值

echo " <tr>";

for($i=0;$i<count($dataArr);$i++)

{

echo "<td>$dataArr[$i]</td>";

}

echo "</tr> ";

  


$dataArr = NULL;

$SheelTitle=NULL;

}

echo "</table>";

?>


评论