php 和thinkphp 对excel操作

php对excel的操作主要通过引入 excel_reader2.php 或者是PHPExcel 类进行   两个文件自行下载

php 对其读操作:

 文件目录结构php 和thinkphp 对excel操作  

excel_reader2.php  在网上进行下载

代码:

  <html>

  <head>

   <style>

     table td{border:2px solid red;padding:2px;}

	 table{}

   </style>

  </head>

   <body>

   <?php

  error_reporting(E_ALL ^ E_NOTICE);

  require_once 'excel_reader2.php';  //引入excel类

  $data = new Spreadsheet_Excel_Reader("test.xls");  //获取将要读取的excel文档

  echo $data->sheets[0]['numRows'];  //获得excel中的总表格数

  echo  "<table style='border:2px solid red;'>";

   for ($i = 1; $i < $data->sheets[0]['numRows']; $i++) //从一开始计数

     {

	   echo "<tr style='border:2px solid red;'>";

       echo "<td>" .$data->sheets[0]['cells'][$i][1]."</td><td>".

          $data->sheets[0]['cells'][$i][2]."</td><td>".    //班级

      $data->sheets[0]['cells'][$i][3]."</td><td> " . //姓名

      $data->sheets[0]['cells'][$i][4]. "</td><td> " .   //性别

      $data->sheets[0]['cells'][$i][5]."</td>" ;   //班内序号

	  echo "</tr>";

     }

 echo "</table>";

 ?>

   </body>

 </html>

 

 

运行结果:

php 和thinkphp 对excel操作

php进行写操作: 这样结果是直接提供下载

 

<?php 

echo "ok";

header("Content-type:application/vnd.ms-excel"); 

header("Content-Disposition:filename=test.xls"); 

echo "test1\t"; 

echo "test2\t\n"; 

echo "test1\t"; 

echo "test2\t\n"; 

echo "test1\t"; 

echo "test2\t\n"; 

echo "test1\t"; 

echo "test2\t\n"; 

echo "test1\t"; 

echo "test2\t\n"; 

echo "test1\t"; 

echo "test2\t\n"; 

/*

,然后按照每一列数据结束后加\t,每一行数据结束后加\n的方法echo出来,

在php的开头用header("Content-type:application/vnd.ms-excel");

表示输出的是excel文件,用header("Content-Disposition:filename=test.xls");

表示输出的文件名为text.xls。这样就ok了。 

*/

?> 

 


直接读取将其显示在网页中只需要把前面的两个header变为

 

header("Content-type:application/vnd.ms-excel");

header( "Content-Disposition:attachment;filename=名称.xls");

 

 

thinkphp对excel操作一般是将文件上传到服务器上在进行将数据读入到数据库,再次将不符合要求的数据写入excel供用户下载

excel_reader2.php 和PHPExcel 类 放在thinkphp 框架中,具体位置如图,红线就是两个文件

php 和thinkphp 对excel操作

后台处理代码:

 

 //将模板导入数据库并将不合格数据生成excel提供下载

    public function excel(){

    	import("ORG.Net.UploadFile");

    	Vendor('excel_reader2');

    	Vendor('PHPExcel.PHPExcel');

    	$upload = new UploadFile();// 实例化上传类

    	$upload->savePath = $data['url']= './Public/upload/model/';

		$upload->allowExts  = array('xls');// 设置附件上传类型

		$upload->saveRule ="abc".time();

		if(!$upload->upload()) {// 上传错误提示错误信息

		  $this->error($upload->getErrorMsg());

		}else{// 上传成功 获取上传文件信息

		  $info =  $upload->getUploadFileInfo();

		}

		

		//进行excel的读取

       $filename="./Public/upload/model/".$info[0]["savename"];

       $data = new Spreadsheet_Excel_Reader($filename);  

       $model=M("user_info");

       //读取数据库检查上传上的账号是否已存在

       $j=0;

       for($i=2;$i<=$data->sheets[0]['numRows'];$i++){

       	$user_id=$data->sheets[0]['cells'][$i][1];//获取excel中的id

       	$count=$model->where("idcard='$user_id'")->count();

       	if($count){  //账号已经存在则将数据存放进数组,将其读入excel供下载

       		 $arr[$j]['idcard']=$user_id;

       		 $arr[$j]['user_name']=$data->sheets[0]['cells'][$i][2];

       		 $arr[$j]['sex']=$data->sheets[0]['cells'][$i][3];

       		 $j++;

       }else{//将数据存入数据库

        $DATA['user_name']  =$data->sheets[0]['cells'][$i][2]; //获取用户名

        $DATA['sex'] =$data->sheets[0]['cells'][$i][3];   //获取性别

        $DATA['idcard'] = $user_id;

        $DATA['pwd']=md5("123456");

        $DATA['tellphone']="";

        $DATA[birthday]='1970-01-01';

        $DATA['creat_user']=$_SESSION['user_name'];

        $DATA['user_state']='1';

        $DATA['is_del']='0';

        $DATA['user_type']='1';

        $DATA['creat_time']=time();

       	$model->add($DATA);

       }

     }

     

      //进行excel的写入

     $objPHPExcel = new PHPExcel();

        foreach($arr as $k => $v){

             $num=$k+1;

             $objPHPExcel->setActiveSheetIndex(0)

                         //Excel的第A列,uid是你查出数组的键值,下面以此类推

                          ->setCellValue('A'.$num, $v['idcard'])    

                          ->setCellValue('B'.$num, $v['user_name'])

                          ->setCellValue('C'.$num, $v['sex']);

            }

            $objPHPExcel->getActiveSheet()->setTitle('User');

            $objPHPExcel->setActiveSheetIndex(0);

             $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');

            //$objWriter->save('php://output');

            $file=time().".xls";

            $saveload="./Public/upload/model/abcd".$file;

            echo $saveload;

             $objWriter->save($saveload);//下载到文件

      $num=$data->sheets[0]['numRows']-1;

      $num2=$data->sheets[0]['numRows']-1-count($arr);

      $string="<br /><span style='margin-left:45px;'>共有<font color='red'>".$num."</font>条数据<span><br />";

      $string .= "<span style='margin-left:45px;'>上传成功<font color='red'>".$num2."</font>条<span><br />";

      $string .= "<span style='margin-left:45px;'>失败<font color='red'>".count($arr)."</font>条<span><br />";

      $string .="<a href='\excour\src\excour\Public\Upload\model\abcd".$file."'>下载失败数据</a>";

      echo $string;

             exit;

    }



 


 

你可能感兴趣的:(thinkphp)