PHPExcel探索之旅---阶段四 导入文件
步骤就是:实例化excel读取对象=> 加载excel文件 => 读取excel文件(全部读取、逐行读取)
1 <?php 2 header("Content Type :text/html;chartset=utf-8"); 3 $dir = dirname(__FILE__);//找到当前脚本所在路径 4 require $dir.'/PHPExcel/PHPExcel/IOFactory.php';//引入读取excel的类文件 5 require $dir."/db.php"; 6 $filename = $dir."/reader_1.xlsx"; 7 $db = new db($phpexcel);//实例化的db类 连接mysql数据库 8 9 $fileType = PHPExcel_IOFactory::identify($filename);//自动获取文件的类型提供给PHPExcel用 10 $objReader = PHPExcel_IOFactory::createReader($fileType);//获取文件读取操作对象 11 $sheetName = "Sheet1"; 12 $objReader -> setLoadSheetsOnly($sheetName); 13 14 //$objPHPExcel = PHPExcel_IOFactory::load($filename);//全部加载文件 15 16 $objPHPExcel = $objReader -> load($filename);//部分加载文件 17 $sheetCount = $objPHPExcel -> getSheetCount();//获取excel里有多少个sheet 18 for($i = 0;$i < $sheetCount;$i ++){ 19 $data = $objPHPExcel -> getSheet($i) -> toArray();//读取每个sheet中的数据全部放入到数组中 20 } 21 22 /* //尝试向数据库添加二excel中的数据 23 $data = $objPHPExcel -> getSheet() -> toArray(); 24 print_r($data); 25 foreach ($data as $key => $val){ 26 print_r($val); 27 $db -> insertData($val); 28 } 29 */ 30 foreach ($objPHPExcel -> getWorksheetIterator() as $sheet){//循环取sheet 31 foreach ($sheet -> getRowIterator() as $row){//逐行处理 32 if($row -> getRowIndex() < 2){ 33 continue; 34 } 35 foreach ($row -> getCellIterator() as $cell){//逐列处理 36 $data = $cell;//获取单元格数据 37 echo $data." "; 38 } 39 echo "<br>"; 40 } 41 echo "<br>"; 42 } 43
首先应该将读取excel类的文件引入进来
require $dir.'/PHPExcel/PHPExcel/IOFactory.php';//引入读取excel的类文件
以下代码是通过获取文件类型后,对excel文件进行新建文件读取对象,以sheet名字来实现对某个sheet数据的读取和加载
$fileType = PHPExcel_IOFactory::identify($filename);//自动获取文件的类型提供给PHPExcel用 $objReader = PHPExcel_IOFactory::createReader($fileType);//获取文件读取操作对象 $sheetName = "Sheet1"; $objReader -> setLoadSheetsOnly($sheetName); $objPHPExcel = $objReader -> load($filename);//部分加载文件
以下代码是将文件全部暴力加载,并将每个sheet表中的数据放到$data中,此时的$data是一个下标为数字的数组。这种方便想数据库中插入数据
//$objPHPExcel = PHPExcel_IOFactory::load($filename);//全部加载文件 //暴力的将一个excel文件中的每个sheet中的所有数据都放到$data中 $sheetCount = $objPHPExcel -> getSheetCount();//获取excel里有多少个sheet for($i = 0;$i < $sheetCount;$i ++){ $data = $objPHPExcel -> getSheet($i) -> toArray();//读取每个sheet中的数据全部放入到数组中 }
/* //尝试向数据库添加二excel中的数据 $data = $objPHPExcel -> getSheet() -> toArray(); print_r($data); foreach ($data as $key => $val){ print_r($val); $db -> insertData($val); } */
利用PHPExcel中自带的函数将excel文件进行sheet=>row=>cell的逐行逐列的读
foreach ($objPHPExcel -> getWorksheetIterator() as $sheet){//循环取sheet foreach ($sheet -> getRowIterator() as $row){//逐行处理 if($row -> getRowIndex() < 2){ continue; } foreach ($row -> getCellIterator() as $cell){//逐列处理 $data = $cell;//获取单元格数据 echo $data." "; } echo "<br>"; } echo "<br>"; }