yii框架实现phpexcel导入导出

yii框架实现phpexcel导入导出

首先进行phpexcel安装

网上有很多扩展安装,这里就不介绍了,可以通过composer安装,也可以手动下载引入,这里需要注意的是composer和手动下载在引用类时不太一样,composer安装的直接用根命名空间即可"/PHPExcel",手动安装需按照自己定义的引用。

一.文件导入

  1. html代码
<input type="file" style="" name="phone_list" />
  1. php代码
$insert = array();
$file = UploadedFile::getInstance($model, 'phone_list');
if (!$file) {
    $this->backToJson(self::STATUS_ERROR,[],'上传文件有误!');
}
$reader = new PHPExcel_Reader_Excel2007;//建立excel对象
$PHPExcel = $reader->load($file->tempName); //加载文件    
$currentSheet = $PHPExcel->getSheet(0);        //**读取excel文件中的指定工作表*/
$allColumn = $currentSheet->getHighestColumn();        //**取得最大的列号*/
$allRow = $currentSheet->getHighestRow();        //**取得一共有多少行*/
$allColumn++;
for($rowIndex=1; $rowIndex<=$allRow; $rowIndex++){  //循环读取每个单元格的内容。注意行从1开始,列从A开始
    $item = array();
    for($colIndex='A';$colIndex!=$allColumn;$colIndex++){
       $addr = $colIndex.$rowIndex;
       $cell = $currentSheet->getCell($addr)->getValue();
       if($cell instanceof \PHPExcel_RichText){ //富文本转换字符串
           $cell = $cell->__toString();
       }
       $val = iconv('UTF-8', 'utf-8', $cell);
          $item[] = trim($val);
    }
    if ($item) {
        $insert[] = $item;
    }
}
    //这里最后得到的insert数组就是excel里面的数据

二.文件导出

导出比导入简单很多,我这里写的是通过浏览器弹出文件保存,如果想保存到本地的话,可以自行修改结尾部分
$excel = new PHPExcel();
$excel->getProperties()->setCreator("测试")
      ->setLastModifiedBy("测试")
      ->setTitle('测试')
      ->setSubject('测试')
      ->setDescription('测试')
      ->setKeywords("excel")
      ->setCategory("result file");

$name = "测试文件名称" ;//浏览器导出直接写文件名
/*以下就是对处理Excel里的数据, 横着取数据,主要是这一步,其他基本都不要改*/
//书写excel头部

$excel->setActiveSheetIndex(0)->setCellValue("A1", '名称');
$excel->setActiveSheetIndex(0)->setCellValue("A2", 'test');
$excel->setActiveSheetIndex(0)->setCellValue("B1", '年龄');
$excel->setActiveSheetIndex(0)->setCellValue("B2", '18');


$excel->getActiveSheet()->setTitle('sheet名称');
$excel->setActiveSheetIndex(0);
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="'.$name.'.xlsx"');
header('Cache-Control: max-age=0');
$objWriter = new PHPExcel_Writer_Excel2007($excel);
$objWriter->save('php://output');//这是保存方式,更改括号内参数即可

你可能感兴趣的:(php,yii)