PHPExcel导入文件 有段不懂的代码可以解析下吗

浏览:1117 发布日期:2015/12/09 分类:求助交流 关键字: PHPExcel 数据库
首先项目结构
App/Home
PHPExcel文件存放在 App下 (APP_PATH)
控制器ExcelController.class.php<?php
namespace Home\Controller;
use Think\Controller;
class ExcelController extends Controller {
    public function indexAction() {
        $this->display();
    }

    public function upexcelAction(){
     if (! empty ( $_FILES ['file_stu'] ['name'] )) 
     {
    $tmp_file = $_FILES ['file_stu'] ['tmp_name'];
    $file_types = explode ( ".", $_FILES ['file_stu'] ['name'] );
    $file_type = $file_types [count ( $file_types ) - 1];

     /*判别是不是.xls文件,判别是不是excel文件*/
     if (strtolower ( $file_type ) != "xls")              
     {
       $this->error ( '不是Excel文件,重新上传' );
     }

    /*设置上传路径*/
     $savePath = APP_PATH.'public/Excel/';

    /*以时间来命名上传的文件*/
     $str = date ( 'Ymdhis' ); 
     $file_name = $str . "." . $file_type;

     /*是否上传成功*/
     if (!copy ( $tmp_file, $savePath . $file_name )) 
      {
        $this->error ( '上传失败' );
      }
    }    
    $data = D('Excel')->import( $savePath . $file_name );
    
    $res = array();  //声明数组
    
    //获取信息状态
    foreach($data as $i=>$val){
        $Excel = M("Excel");
        $rs = $Excel->field('res')->Table('excel')->where('did='.$val)->limit(1)->select();
        $res[]= array($val,$rs[0]['res']);
        }
        
    //$data1 = Array (Array( 1,2 ),Array ( 2,3));
    $res = D('Excel')->export($res,$str,"01");
    }
}
?>
其中这段代码有的看不懂 res 是个啥 还有后边的数组:foreach($data as $i=>$val){
        $Excel = M("Excel");
        $rs = $Excel->field('res')->Table('excel')->where('did='.$val)->limit(1)->select();
        $res[]= array($val,$rs[0]['res']);
        }
        
    //$data1 = Array (Array( 1,2 ),Array ( 2,3));
都读取XLS文件了 怎么保存到数据库中!!!
提示:1146:Table 'sjlzxcx.excel' doesn't exist [ SQL语句 ] : SHOW COLUMNS FROM `excel`模型ExcelModel.class.php 这个文件没问题 大家参考<?php
namespace  Home\Model;
use Think\Model;

class ExcelModel extends Model {
  protected $tableName = 'products_log';
  
  public function __construct() {
  
    /*导入phpExcel核心类 */
    require_once APP_PATH.'PHPExcel/PHPExcel.php'; 
    require_once APP_PATH.'PHPExcel/PHPExcel/Writer/Excel5.php';     // 用于其他低版本xls 
  require_once APP_PATH.'PHPExcel/PHPExcel/Writer/Excel2007.php'; // 用于 excel-2007 格式 
  }


//导入excel内容转换成数组 
public function import($filePath){
  $this->__construct();
  $PHPExcel = new \PHPExcel(); 

  /**默认用excel2007读取excel,若格式不对,则用之前的版本进行读取*/ 
  $PHPReader = new \PHPExcel_Reader_Excel2007(); 
    if(!$PHPReader->canRead($filePath)){ 
      $PHPReader = new \PHPExcel_Reader_Excel5(); 
      if(!$PHPReader->canRead($filePath)){ 
        echo 'no Excel'; 
        return; 
      } 
    } 
  
  $PHPExcel = $PHPReader->load($filePath); 
  $currentSheet = $PHPExcel->getSheet(0);  //读取excel文件中的第一个工作表
  $allColumn = $currentSheet->getHighestColumn(); //取得最大的列号
  $allRow = $currentSheet->getHighestRow(); //取得一共有多少行
  $erp_orders_id = array();  //声明数组
  
  /**从第二行开始输出,因为excel表中第一行为列名*/ 
  for($currentRow = 1;$currentRow <= $allRow;$currentRow++){ 
  
      /**从第A列开始输出*/ 
    for($currentColumn= 'A';$currentColumn<= $allColumn; $currentColumn++){ 
    
      $val = $currentSheet->getCellByColumnAndRow(ord($currentColumn) - 65,$currentRow)->getValue();/**ord()将字符转为十进制数*/
      if($val!=''){
      $erp_orders_id[] = $val; 
      }
      /**如果输出汉字有乱码,则需将输出内容用iconv函数进行编码转换,如下将gb2312编码转为utf-8编码输出*/ 
      //echo iconv('utf-8','gb2312', $val)."\t"; 
      
    } 
  } 
  return $erp_orders_id;
}

//导出Excel表格
public function export($data,$excelFileName,$sheetTitle){

    $this->__construct();
    /* 实例化类 */
    $objPHPExcel = new \PHPExcel(); 
    
    /* 设置输出的excel文件为2007兼容格式 */
    //$objWriter=new PHPExcel_Writer_Excel5($objPHPExcel);//非2007格式
    $objWriter = new \PHPExcel_Writer_Excel2007($objPHPExcel);
    
    /* 设置当前的sheet */
    $objPHPExcel->setActiveSheetIndex(0);
    
    $objActSheet = $objPHPExcel->getActiveSheet();
    
    /*设置宽度*/
    $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(10);
    $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(60);
    
    
        
    /* sheet标题 */
    $objActSheet->setTitle($sheetTitle);
    
    $i = 2;
    foreach($data as $value)
    {
        /* excel文件内容 */
        $j = 'A';
        foreach($value as $value2)
        { 
//            $value2=iconv("gbk","utf-8",$value2);
            $objActSheet->setCellValue($j.$i,$value2);
            $j++;
        }
        $i++;
    }
    
    
    /* 生成到浏览器,提供下载 */ 
    ob_end_clean();  //清空缓存             
    header("Pragma: public");
    header("Expires: 0");
    header("Cache-Control:must-revalidate,post-check=0,pre-check=0");
    header("Content-Type:application/force-download");
    header("Content-Type:application/vnd.ms-execl");
    header("Content-Type:application/octet-stream");
    header("Content-Type:application/download");
    header('Content-Disposition:attachment;filename="'.$excelFileName.'.xlsx"');
    header("Content-Transfer-Encoding:binary"); 
    $objWriter->save('php://output');
}


}
?> 
最佳答案
评论() 相关
后面还有条评论,点击查看>>