• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

PHP中excel的导入

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

1.1 Excel导入:

Excel导入过程包含文件上传、excel文件的解析两个方面,文件上传和图片上传差不多,前台通过<input type="file" name="file" ]。再说说excel文件的解析。Php中常用的解析excel的库有两个,一个是PHPExcel,另一个是PHPExcelReader。PHPExcel是一个很强大的excel工具库,对office 2003以及office 2007等excel格式的文件无论是导入还是导出都能够很好的支持。PHPExcelReader则简单方便,但是功能要少些。根据项目需求选择适当的库。

1.1.1 PHPExcelReader方式

PHPExcelReader只包含两个文件:oleread.increader.php。在系统中include这两个文件即可。考虑到系统中可能会频繁读取excel,因此统一对excel文件进行二维数组的映射,这样能够更方便的应用。解析为数组以后,就可以方便的存入数据库或者做其他的事情。

 1 require_once 'Excel/reader.php';  
 2 function readExcel($file){    
 3        $data = new Spreadsheet_Excel_Reader();//创建Spreadsheet_Excel_Reader类的对象,用于读取excel    
 4         $data->setOutputEncoding('UTF-8');//设置解析后的数据的字符编码    
 5         $data->read($file);//$file为excel文件名    
 6         error_reporting(E_ALL ^ E_NOTICE);//输出E_ALL ^ E_NOTICE级别的信息(报错)    
 7         //使用$data->sheets读取excel的数据    
 8         $excelArr=array();    
 9         for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++){    
10             $index=$data->sheets[0]['cells'][1][$j];    
11             $excelArr[$index]=array();    
12             for ($i = 2; $i <= $data->sheets[0]['numRows']; $i++){    
13                 $excelArr[$index][]=$data->sheets[0]['cells'][$i][$j];       
14             }    
15         }    
16         return $excelArr;  
17     }  
18     $share = readExcel("jxlrwtest.xls");  
19 print_r($share);  

对于这样的表单

看到输出的数组

Array ( [id] => Array ( [0] => 12 [1] => 2 [2] => [3] => ) [name] => Array ( [0] => sharexi [1] => zhangfe [2] => 王老五 [3] => ) [school] => Array ( [0] => hust [1] => 华中科技大学 [2] => [3] => 的快捷方式快乐 ) [home] => Array ( [0] => tencent [1] => 腾讯 [2] => 看到房价快速 [3] => 213 ) ) 

1.1.2 PHPExcel 方式

PHPExcel最新版下载:
http://phpexcel.codeplex.com/ 

通过引入PHPExcel库的方式,首先建立phpexcel文档对象,$PHPExcel = new PHPExcel(); 然后建立文档读取对象,$reader = PHPExcel_IOFactory::createReader('Excel5'); //设置以Excel5格式(Excel97-2003工作簿)或者$reader = PHPExcel_IOFactory::createReader('Excel2007'); //设置以Excel2007格式(Excel2007以上工作簿),然后调用读取接口对文档内容进行循环读取,可建立二维数组存储数据

 1 <?php  
 2 set_include_path(get_include_path() . PATH_SEPARATOR . '../Classes/');  
 3 include 'PHPExcel.php';   
 4 include 'PHPExcel/IOFactory.php';  
 5 /**对excel里的日期进行格式转化*/   
 6 function GetData($val){   
 7 $jd = GregorianToJD(1, 1, 1970);   
 8 $gregorian = JDToGregorian($jd+intval($val)-25569);   
 9 return $gregorian;/**显示格式为 “月/日/年” */   
10 }   
11 $filePath = 'Book1.xls';   
12 $PHPExcel = new PHPExcel();   
13 $reader = PHPExcel_IOFactory::createReader('Excel5'); //设置以Excel5格式(Excel97-2003工作簿)  
14 //$PHPExcel = $PHPReader->load($filePath);   
15 $PHPExcel = $reader->load($filePath);   
16 /**读取excel文件中的第一个工作表*/   
17 $currentSheet = $PHPExcel->getSheet(0);   
18 /**取得最大的列号*/   
19 $allColumn = $currentSheet->getHighestColumn();   
20 /**取得一共有多少行*/   
21 $allRow = $currentSheet->getHighestRow();   
22 /**从第一行开始输出,因为excel表中第一行为列名*/   
23 for($currentRow = 1;$currentRow <= $allRow;$currentRow++){   
24 /**从第A列开始输出*/     
25 for($currentColumn= 'A';$currentColumn<= $allColumn; $currentColumn++){   
26 $val = $currentSheet->getCellByColumnAndRow(ord($currentColumn) - 65,$currentRow)->getValue();/**ord()将字符转为十进制数*/   
27 if($currentColumn == 'A')   
28 {   
29 echo GetData($val)."\t";   
30 }else{   
31 //echo $val;   
32 /**如果输出汉字有乱码,则需将输出内容用iconv函数进行编码转换,如下将gb2312编码转为utf-8编码输出*/   
33 echo iconv('utf-8','gb2312', $val)."\t";   
34 }   
35 }   
36 echo "</br>";   
37 }   
38 echo "\n";   
39 ?>  

上面的表格内容输出如下:

12/30/1899 name school home 
1/11/1900 sharexie hust tencent 
1/1/1900 zhangfei 华中科技大学 腾讯 
12/30/1899 王老五 看到房价快速的 
12/30/1899 的快捷方式快乐 213  

这里只是简单的输出数据,可以存入二维数组,进行后续处理。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
安装php的lavavel框架的流程(亲测)发布时间:2022-07-10
下一篇:
PHP数组合并和去重的函数有哪些发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap