tthinkphp5中的excel导入导出功能

一、phpExcel的简介

PHPExcel 是用来操作Office Excel 文档的一个PHP类库,它基于微软的OpenXML标准和PHP语言。可以使用它来读取、写入不同格式的电子表格,如 Excel (BIFF) .xls, Excel 2007 (OfficeOpenXML) .xlsx, CSV, Libre/OpenOffice Calc .ods, Gnumeric, PDF, HTML等等。

二、下载phpexcel

使用composer下载

composer require phpoffice/phpexcel

三、在thinkphp中如何使用phpExcel

使用use引入文件

  1. 导出
 public function  index(){

      Loader::import('PHPExcel.php');

      $obj = new \PHPExcel();//实例化对象

      //选择你要操作的sheet表

      $objsheet=$obj->getActiveSheet();

      //通过代码该sheet的名字

      $objsheet->setTitle('sheet的标题');//改要操作的sheet

/*      //标题和值 setCellvalue

      $objsheet->setCellValue('A1','编号')->setCellValue('B1','名称')->setCellValue('C1','年龄');//第一参数  位置  第二个参数是  值

      $objsheet->setCellValue('A2','1')->setCellValue('B2','刘香香')->setCellValue('C2','18');//第一参数  位置  第二个参数是  值

      $objsheet->setCellValue('A3','1')->setCellValue('B3','喜羊羊')->setCellValue('C3','18');//第一参数  位置  第二个参数是  值*/

      //操作数组格式的数据 是一个二维数组

 /*     $array=array(

          array(),//第一行空着

          array('班级','姓名','学号'),

          array('1609phpC班','张三','123'),

      );*/

      $goods=Db::table('attribute')->select();//查询数据

      //获取下标

      $keys=array_keys($goods[0]);

      array_unshift($goods,$keys);

      $objsheet->fromArray($goods);

      //调用写入Excel中

      //如果你想要的是xls的文件 Excel5   -如果你想后缀是xlsx  写Execl2007

      //这是新的一个类型,所以跟上\

      $objwrite=\PHPExcel_IOFactory::createWriter($obj,"Excel5");

      //保存成功的返回值是NULL的所以不能打印判断是否成功,在此执行时会覆盖,在执行时不要打开文件

      $objwrite->save('./文件名称.xls');

  }

下载在:public目录下

想要下载在浏览器中修改代码

 public function index()
    {
        $obj = new \PHPExcel();//实例化对象
        //选择你要操作的sheet表
        $objsheet=$obj->getActiveSheet();
        //通过代码该sheet的名字
        $objsheet->setTitle('08C');//改要操作的sheet表
        $goods=Order::select();
        $goods=collection($goods)->toArray();
        //获取下标
        $keys=array_keys($goods[0]);
        array_unshift($goods,$keys);
        $objsheet->fromArray($goods);
        //调用写入Excel中
        //如果你想要的是xls的文件 Excel5   -如果你想后缀是xlsx  写Execl2007
        //这是新的一个类型,所以跟上\
        $objwrite=\PHPExcel_IOFactory::createWriter($obj,"Excel5");
        //保存成功的返回值是NULL的所以不能打印判断是否成功,在此执行时会覆盖,在执行时不要打开文件
        $xlsTitle = iconv('utf-8', 'gb2312', 'order');//文件名称
        $fileName = "order".date('_YmdHis');
        header('pragma:public');
        header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$xlsTitle.'.xls"');
        header("Content-Disposition:attachment;filename=$fileName.xls");//"xls"参考下一条备注
        $objwrite->save('php://output');
    }
  1. 重点核心代码
  2. 导入
  3. 指定上传页面
public function  ipmort_html(){

  return  view();

}
  1. html页面
<form  action="__URL__/import_insert" method="post" enctype="multipart/form-data">

    请选择你要上传的文件:<input   type="file" name="exc">

    <input  type="submit" value="提交">

</form>
  1. 提交至后台进行导入
 //导入处理

    public function import_insert(){

        Loader::import('PHPExcel.php');

        $obj = new \PHPExcel();//实例化对象

        $file = request()->file('exc'); // 获取表单上传文件 例如上传了001.jpg

// 移动到框架应用根目录/public/uploads/ 目录下

        $info = $file->validate(['ext'=>'xls,xlsx'])->move(ROOT_PATH . 'public' . DS . 'uploads');//文件上传,限制文件上传的类型

        if($info){

            $filename= $info->getSaveName();//得到文件 的时候的路径

            $path=ROOT_PATH . 'public' . DS . 'uploads'.DS.$filename;//拼接上传到服务器端的xls的数据

            $objload=  \PHPExcel_IOFactory::load($path);//调用读取数据的方法

            $data= $objload->getSheet(0)->toArray();//将sheet1表中的数据转换为数组类型数据

            //$row=$objload->getSheet()->getHighestRow(); //得到表格中的行数

          /*  $sheetCount=$obj->getSheetCount();//获取工作表的数目

            for($i=0;$i<$sheetCount;$i++){//循环得出数据表的数据

                $arr[]=$objload->getSheet($i)->toArray();

            }*/

            $keys=array_shift($data);//从数组中删除第一条数据,返回值为删除的数据

            foreach($data as $key=>$value){

                $newdata[]=array_combine($keys,$value);

            }

            $res=Db::table('attribute')->insertAll($newdata);

            if($res){

                $this->success('导入数据成功');

            }else{

                $this->error('导入数据失败');

            }

        }else{

            echo $file->getError();// 上传失败获取错误信息

        }

    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JSP网页添加Excel导入导出功能的实现方法如下: 首先,我们需要引入Apache POI库。Apache POI库是一组用于处理Microsoft文件格式的Java API,包括Excel文件格式。你可以在Maven或Gradle配置文件添加POI库的依赖项。 一旦你引入了POI库,你可以在JSP页面使用Java代码来实现Excel导入导出功能。 要实现导出功能,你可以创建一个方法来生成Excel文件。首先,创建一个Workbook对象,例如HSSFWorkbook(针对.xls文件)或XSSFWorkbook(针对.xlsx文件)。然后,创建一个Sheet对象,并在该对象创建行和单元格,并设置所需的值。最后,将Workbook对象写入输出流。 要实现导入功能,你可以在JSP页面创建一个表单,用户可以选择要导入Excel文件。一旦用户选择了文件并提交了表单,你可以在JSP页面的Java代码处理上传的文件。你可以使用POI库的工具类来解析Excel文件,并逐行读取数据。然后,你可以通过编写代码将数据插入到数据库,或者通过输出到JSP页面显示数据。 需要注意的是,Excel文件的格式可能会受到各种复杂因素的影响。你可能需要处理各种数据类型、日期格式,以及Excel文件的各个工作表和命名区域。 此外,为了增强用户体验,你可以添加一些验证和错误处理的逻辑。例如,当用户导入导出时,你可以检查文件类型和大小,以确保其符合要求。你还可以根据需要添加其他功能,例如将Excel文件作为模板下载或在导入时执行数据验证。 总之,通过引入Apache POI库并编写Java代码,你可以实现JSP网页的Excel导入导出功能。这将使用户能够将数据轻松地从Excel文件导入到网页,或者将数据从网页导出Excel文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值