ThinkPHP5调用PHPExcel类实现导入导出

注意:extend是放置第三方类的地方,不要乱配置命名空间那些,引起不必要的类错误

代码如下

<?php
namespace app\index\controller;
use think\Controller;
use think\Db;
use think\Loader;
use think\Request;
//use lib\PExcel;

class Four extends Controller
{
    //上传页面展示
    public function index(){
        return view();
    }

    //实现excel的导入操作
    public function uploadExcel(){
//        //接收文件
//        $file = request()->file(‘excel‘);
//        $info = $file->validate([‘size‘=>3145728,‘ext‘=>‘xlsx,xls,csv‘])->move(ROOT_PATH . ‘public‘ . DS . ‘static‘ . DS . ‘excels‘);
//        if($info){
//            $excel_path = ROOT_PATH.‘public‘.DS.‘static‘.DS."excels".DS.$info->getSaveName();
//        }else{
//            $excel_path = null;
//        }
        //防止乱码
        ini_set(‘memory_limit‘, ‘1024M‘);//设置php允许的文件大小最大值
        Loader::import(‘PHPExcel.Classes.PHPExcel‘);//必须手动导入,否则会报PHPExcel类找不到
        header("Content-type:text/html;charset=utf-8");
        //接收文件
        $file = $_FILES[‘excel‘];
        $extension = strtolower( pathinfo($file[‘name‘], PATHINFO_EXTENSION) );
        //实例化主文件
        $phpExcel = new \PHPExcel();
        //创建读入器
        if($extension==‘xlsx‘){
            $objRender = \PHPExcel_IOFactory::createReader(‘excel2007‘);
        }else{
            $objRender = \PHPExcel_IOFactory::createReader(‘Excel5‘);
        }
        //读取excel文件
        $ExcelObj = $objRender->load($file[‘tmp_name‘]);
        //查看有几个sheet
        $sheetContent = $ExcelObj->getSheet(0)->toArray();
        unset($sheetContent[0]);
        //取出文件的内容描述信息
        //$sheetColumn = $objRender->listWorksheetInfo($file[‘tmp_name‘]);
        foreach ($sheetContent as $k => $v){
            $arr[‘uname‘] = $v[0];
            $arr[‘sex‘] = $v[1];
            $arr[‘age‘] = $v[2];
            $arr[‘class_name‘] = $v[3];
            $res[] = $arr;
        }

        if(Db::name(‘excel_upload‘)->insertAll($res)){
            $this->success("导入成功");
        }else{
            $this->error("导入失败");
        }
        //echo $sheetColumn[0][‘totalColumns‘];die;
    }

/************************************************************************************/    //实现excel的导出操作
    public function excel_download(){
        ini_set(‘memory_limit‘, ‘1024M‘);//设置php允许的文件大小最大值
        Loader::import(‘PHPExcel.Classes.PHPExcel‘);//必须手动导入,否则会报PHPExcel类找不到
        $data = Db::table("excel_upload")->select();
        //实例化excel(相当于创建了一个excel)
        $objPHPExcel = new \PHPExcel();
        //获得当前活动的sheet
        $objSheet = $objPHPExcel->getActiveSheet();
        //给当前的sheet修改名称
        $objSheet->setTitle("测试数据导出");
        //设置单元格垂直居中、水平居中
        $objSheet->getDefaultStyle()->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER)->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        //设置单元格格式范围的字体、字体大小、加粗
        $objSheet->getStyle("A1:Z1")->getFont()->setName("微软雅黑")->setSize(10)->setBold(true);
        //给单元格填充背景色
        $objSheet->getStyle("A1:Z1")->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setARGB(‘#00FF00‘);
        //填充边框
        $styleArray = [
            ‘borders‘=>[
                ‘outline‘=>[
                    ‘style‘=>\PHPExcel_Style_Border::BORDER_THICK,
                    ‘color‘ => [‘argb‘ => ‘#F0F8FF‘],
                ],
            ],
        ];

        //填充样式
        $objSheet->getStyle("A1")->applyFromArray($styleArray);
        $objSheet->getStyle("B1")->applyFromArray($styleArray);
        $objSheet->getStyle("C1")->applyFromArray($styleArray);
        $objSheet->getStyle("D1")->applyFromArray($styleArray);
        $objSheet->getStyle("E1")->applyFromArray($styleArray);

        //填充数据
        $objSheet->setCellValue("A1","ID")
            ->setCellValue("B1","姓名")
            ->setCellValue("C1","性别")
            ->setCellValue("D1","年龄")
            ->setCellValue("E1","班级");

        //到这里第一行就被占用了,所以要从第二行开始循环
        $j = 2;
        foreach ($data as $k => $v){
            $objSheet->setCellValue("A".$j,$v[‘id‘])
                ->setCellValue("B".$j,$v[‘uname‘])
                ->setCellValue("C".$j,$v[‘sex‘])
                ->setCellValue("D".$j,$v[‘age‘])
                ->setCellValue("E".$j,$v[‘class_name‘]);
            $j++;
        }

//        header(‘Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet‘);
//        header(‘Content-Disposition: attachment;filename="‘ . date(‘Ymd‘) . ‘.xlsx"‘);
//        header(‘Cache-Control: max-age=0‘);
//// If you‘re serving to IE 9, then the following may be needed
//        header(‘Cache-Control: max-age=1‘);
//// If you‘re serving to IE over SSL, then the following may be needed
//        header(‘Expires: Mon, 26 Jul 1997 05:00:00 GMT‘); // Date in the past
//        header(‘Last-Modified: ‘ . gmdate(‘D, d M Y H:i:s‘) . ‘ GMT‘); // always modified
//        header(‘Cache-Control: cache, must-revalidate‘); // HTTP/1.1
//        header(‘Pragma: public‘); // HTTP/1.0
//        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, ‘Excel2007‘);
//        $objWriter->save(‘php://output‘);

//        exit;

        //设置文件保存的命名、编码、同时开放保存路径的权限
        //命名
        $file_name = "上海软工专业高级成材率汇总 ".date("Y-m-d",time()).".xlsx";
        //编码
        header(‘Content-Type:application/vnd.ms-excel;charset=utf-8‘);
        //告诉浏览器要输出的名称
        header("Content-Disposition:attachment;filename=$file_name");
        //禁止浏览器缓存
        header(‘Cache-Control:max-age=0‘);
        //生成excel文件
        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel,‘Excel2007‘);
        //彻底开放保存路径
        $objWriter->save(‘php://output‘);
        exit();
    }

    public function te(){
        $a = "
<table>
<thead>
<tr>
<th style=‘color: #ffb454‘>adsf</th>
<th>中文</th>
</tr>
</thead>
<tbody>
<tr>
<td>123</td>
<td>123</td>
</tr>
</tbody>
</table>
";

        $a = "\xEF\xBB\xBF" . $a;
        $filename = date(‘Ymd‘).‘.xls‘; //设置文件名
        header( "Content-Type: application/vnd.ms-excel; name=‘excel‘" );

        header( "Content-type: application/octet-stream" );

        header( "Content-Disposition: attachment; filename=".$filename );

//header( "Cache-Control: must-revalidate, post-check=0, pre-check=0" );
//
//header( "Pragma: no-cache" );
//
//header( "Expires: 0" );

        exit( $a );
    }

    public function ttt(){
        ini_set(‘memory_limit‘, ‘1024M‘);//设置php允许的文件大小最大值
        Loader::import(‘PHPExcel.Classes.PHPExcel‘);//必须手动导入,否则会报PHPExcel类找不到
        $objPHPExcel = new \PHPExcel();
        $worksheet = $objPHPExcel->getActiveSheet();
        $objPHPExcel->getDefaultStyle()->getAlignment()->setVertical(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        $objPHPExcel->getDefaultStyle()->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
// Set document properties
        $objPHPExcel->getProperties()->setCreator("Maarten Balliauw")
            ->setLastModifiedBy("Maarten Balliauw")
            ->setTitle("Office 2007 XLSX Test Document")
            ->setSubject("Office 2007 XLSX Test Document")
            ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
            ->setKeywords("office 2007 openxml php")
            ->setCategory("Test result file");
        $objPHPExcel->setActiveSheetIndex(0)
            ->setCellValue(‘A1‘, ‘昵称‘)
            ->setCellValue(‘B1‘, ‘链接‘)
            ->setCellValue(‘C1‘, ‘房间号‘)
            ->setCellValue(‘D1‘, ‘分组‘);
// Rename worksheet
        $objPHPExcel->getActiveSheet()->setTitle(‘Simple‘);
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
        $objPHPExcel->setActiveSheetIndex(0);
// Redirect output to a client’s web browser (Excel2007)
        header(‘Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet‘);
        header(‘Content-Disposition: attachment;filename="‘ . date(‘Ymd‘) . ‘.xlsx"‘);
        header(‘Cache-Control: max-age=0‘);
// If you‘re serving to IE 9, then the following may be needed
        header(‘Cache-Control: max-age=1‘);
// If you‘re serving to IE over SSL, then the following may be needed
        header(‘Expires: Mon, 26 Jul 1997 05:00:00 GMT‘); // Date in the past
        header(‘Last-Modified: ‘ . gmdate(‘D, d M Y H:i:s‘) . ‘ GMT‘); // always modified
        header(‘Cache-Control: cache, must-revalidate‘); // HTTP/1.1
        header(‘Pragma: public‘); // HTTP/1.0
        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, ‘Excel2007‘);
        $objWriter->save(‘php://output‘);

        exit;
    }
}

原文地址:https://www.cnblogs.com/afeige/p/9719956.html

时间: 2024-08-09 08:14:57

ThinkPHP5调用PHPExcel类实现导入导出的相关文章

ThinkPHP3.2.3使用PHPExcel类操作excel导出excel

如何导入excel请看:ThinkPHP3.2.3使用PHPExcel类操作excel导入读取excel // 引入PHPExcel类 import("Org.Util.PHPExccel"); import("Org.Util.PHPExccel.Reader.Excel5"); // 创建Excel文件对象 $excel = new \PHPExcel(); // 设置文档信息,这个文档信息windows系统可以右键文件属性查看,.xls时有效$excel-&g

php利用PHPExcel类导出导入Excel用法

PHPExcel类是php一个excel表格处理插件了,下面我来给大家介绍利用PHPExcel类来导入与导出excel表格的应用方法,有需要了解的朋友不防参考参考(PHPExcel自己百度下载这里不介绍了). 导出Excel用法 //设置环境变量(新增PHPExcel) 1 set_include_path('.'. PATH_SEPARATOR . Yii::app()->basePath.'/lib/PHPExcel' . PATH_SEPARATOR . 2 3 get_include_p

excel的导入导出的实现

1.创建Book类,并编写set方法和get方法 1 package com.bean; 2 3 public class Book { 4 private int id; 5 private String name; 6 private String type; 7 // public int a; 8 9 public String getType() { 10 System.out.println("调用了类型方法"); 11 return type; 12 } 13 14 pu

excel导入导出优化

对于上一篇excel中出现的问题,在excel导入导出中都做了优化.还是eclipse+jdk1.8,但是这个项目是一个web项目,需要配合Tomcat服务器,并且使用了SSH框架, I/O操作过多 首先,对于I/O操作过多,那么就不像之前一样,一条一条的添加或者更新;而且凑齐一堆,也就是一个list集合,然后统一的批量保存. 使用SessionFactory获取当前的session,然后调用session的persist方法,保存实体.只是设置了一个批量的量值.每到30条数据,就将缓存同步到数

thinkphp5 使用PHPExcel 导入导出

首先下载PHPExcel类.网上很多,自行下载. 然后把文件放到vendor文件里面. 一般引用vendor里面的类或者插件用vendor(); 里面加载的就是vendor文件,然后想要加载哪个文件,直接写就行,中间的"."相当于文件路径的"/". 例如加载excel5这个文件: 先把html代码贴出来(整个导入导出的): <form enctype="multipart/form-data" method="post"

TP3.2加载外部PHPexcel类,实现导入和导出

TP3.2加载外部PHPexcel类,实现导入和导出 导入: 1.将下载好的PHPexcel文件放到libray/Org/Uti/文件夹下,将PHPEXCEL.PHP改为PHPEXCEL.class.php 2.导入类文件 代码: import("Org.Util.PHPExcel");import("Org.Util.PHPExcel.Reader.Excel5"); 3.配置 代码: $objReader = \PHPExcel_IOFactory::creat

PHPExcel导入导出

慕课教程 -- PHPExcel导入导出 一.PHPExcel导出操作 1.快速入门 <?php #找到当前脚本的路径 $dir = dirname(__FILE__); #引入PHPExcel插件文件 require $dir."/excel/PHPExcel.php"; #实例化PHPExcel类 $objPHPExcel = new PHPExcel(); #获得当前活动sheet的操作对象 $objSheet = $objPHPExcel->getActiveShe

ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例

这篇文章主要介绍了ThinkPHP使用PHPExcel实现Excel数据导入导出,非常实用的功能,需要的朋友可以参考下 本文所述实例是使用在Thinkphp的开发框架上,要是使用在其他框架也是同样的方法,很多人可能不能正确的实现Excel的导入导出,问题基本上都是phpExcel的核心类引用路径出错造成的,如果有问题大家务必要对路劲是否引用正确进行测试. 具体操作步骤如下: (一)导入Excel 第一,在前台html页面进行上传文件:如: <form method="post"

使用phpExcel实现Excel数据的导入导出(完全步骤)

使用phpExcel实现Excel数据的导入导出(完全步骤) 很多文章都有提到关于使用phpExcel实现Excel数据的导入导出,大部分文章都差不多,或者就是转载的,都会出现一些问题,下面是本人研究phpExcel的使用例程总结出来的使用方法,接下来直接进入正题. 首先先说一下,本人的这段例程是使用在Thinkphp的开发框架上,要是使用在其他框架也是同样的方法,很多人可能不能正确的实现Excel的导入导出,问题基本上都是phpExcel的核心类引用路径出错,如果有问题大家务必要对路劲是否引用