thinkphp5使用PHPExcel导出,导入Excel数据

    /**
     * 地址:https://github.com/PHPOffice/PHPExcel    下载PHPExcel,下载后只需要Classes目录下的文件即可。
     * 数据导出
     * @param array $title   标题行名称
     * @param array $data   导出数据
     * @param string $fileName 文件名
     * @param string $savePath 保存路径
     * @param $type   是否下载  false--保存   true--下载
     * @return string   返回文件全路径
     */
    function exportExcel($title=array(), $data=array(), $fileName=‘‘,$sheet=‘‘, $savePath=‘./‘, $isDown=false){
        Loader::import(‘phpexcel.PHPExcel‘);
        Loader::import(‘phpexcel.PHPExcel.IOFactory‘);
        $obj = new \PHPExcel();  

        //横向单元格标识
        $cellName = array(‘A‘, ‘B‘, ‘C‘, ‘D‘, ‘E‘, ‘F‘, ‘G‘, ‘H‘, ‘I‘, ‘J‘, ‘K‘, ‘L‘, ‘M‘, ‘N‘, ‘O‘, ‘P‘, ‘Q‘, ‘R‘, ‘S‘, ‘T‘, ‘U‘, ‘V‘, ‘W‘, ‘X‘, ‘Y‘, ‘Z‘, ‘AA‘, ‘AB‘, ‘AC‘, ‘AD‘, ‘AE‘, ‘AF‘, ‘AG‘, ‘AH‘, ‘AI‘, ‘AJ‘, ‘AK‘, ‘AL‘, ‘AM‘, ‘AN‘, ‘AO‘, ‘AP‘, ‘AQ‘, ‘AR‘, ‘AS‘, ‘AT‘, ‘AU‘, ‘AV‘, ‘AW‘, ‘AX‘, ‘AY‘, ‘AZ‘);  

        $obj->getActiveSheet(0)->setTitle($sheet);   //设置sheet名称
        $_row = 1;   //设置纵向单元格标识
        if($title){
            $_cnt = count($title);
            // $obj->getActiveSheet(0)->mergeCells(‘A‘.$_row.‘:‘.$cellName[$_cnt-1].$_row);   //合并单元格
            // $obj->setActiveSheetIndex(0)->setCellValue(‘A‘.$_row, ‘数据导出:‘.date(‘Y-m-d H:i:s‘));  //设置合并后的单元格内容
            // $_row++;
            $i = 0;
            foreach($title AS $v){   //设置列标题
                $obj->setActiveSheetIndex(0)->setCellValue($cellName[$i].$_row, $v);
                $i++;
            }
            $_row++;
        }  

        //填写数据
        if($data){
            $i = 0;
            foreach($data AS $_v){
                $j = 0;
                foreach($_v AS $_cell){
                    $obj->getActiveSheet(0)->setCellValue($cellName[$j] . ($i+$_row), $_cell);
                    $j++;
                }
                $i++;
            }
        }  

        //文件名处理
        if(!$fileName){
            $fileName = uniqid(time(),true);
        }  

        $objWrite = \PHPExcel_IOFactory::createWriter($obj, ‘Excel2007‘);  

        if($isDown){   //网页下载
            header(‘pragma:public‘);
            header("Content-Disposition:attachment;filename=$fileName.xls");
            $objWrite->save(‘php://output‘);exit;
        }  

        $_fileName = iconv("utf-8", "gb2312", $fileName);   //转码
        $_savePath = $savePath.$_fileName.‘.xlsx‘;
        $objWrite->save($_savePath);  

        return $savePath.$fileName.‘.xlsx‘;
    }  

  

        /**
     * 地址:https://github.com/PHPOffice/PHPExcel
     * 数据导入
     * @param string $file excel文件
     * @param string $sheet
     */
    function importExecl($file=‘‘, $sheet=0){
        $file = iconv("utf-8", "gb2312", $file);   //转码
        if(empty($file) OR !file_exists($file)) {
            die(‘file not exists!‘);
        }
        Loader::import(‘phpexcel.PHPExcel‘);
        $objRead = new \PHPExcel_Reader_Excel2007();   //建立reader对象
        var_dump($objRead);
        die;
        if(!$objRead->canRead($file)){
            $objRead = new \PHPExcel_Reader_Excel5();
            if(!$objRead->canRead($file)){
                die(‘No Excel!‘);
            }
        }  

        $cellName = array(‘A‘, ‘B‘, ‘C‘, ‘D‘, ‘E‘, ‘F‘, ‘G‘, ‘H‘, ‘I‘, ‘J‘, ‘K‘, ‘L‘, ‘M‘, ‘N‘, ‘O‘, ‘P‘, ‘Q‘, ‘R‘, ‘S‘, ‘T‘, ‘U‘, ‘V‘, ‘W‘, ‘X‘, ‘Y‘, ‘Z‘, ‘AA‘, ‘AB‘, ‘AC‘, ‘AD‘, ‘AE‘, ‘AF‘, ‘AG‘, ‘AH‘, ‘AI‘, ‘AJ‘, ‘AK‘, ‘AL‘, ‘AM‘, ‘AN‘, ‘AO‘, ‘AP‘, ‘AQ‘, ‘AR‘, ‘AS‘, ‘AT‘, ‘AU‘, ‘AV‘, ‘AW‘, ‘AX‘, ‘AY‘, ‘AZ‘);  

        $obj = $objRead->load($file);  //建立excel对象
        $currSheet = $obj->getSheet($sheet);   //获取指定的sheet表
        $columnH = $currSheet->getHighestColumn();   //取得最大的列号
        $columnCnt = array_search($columnH, $cellName);
        $rowCnt = $currSheet->getHighestRow();   //获取总行数
        $data = array();
        for($_row=1; $_row<=$rowCnt; $_row++){  //读取内容
            for($_column=0; $_column<=$columnCnt; $_column++){
                $cellId = $cellName[$_column].$_row;
                $cellValue = $currSheet->getCell($cellId)->getValue();
                 //$cellValue = $currSheet->getCell($cellId)->getCalculatedValue();  #获取公式计算的值
                if($cellValue instanceof PHPExcel_RichText){   //富文本转换字符串
                    $cellValue = $cellValue->__toString();
                }  

                $data[$_row][$cellName[$_column]] = $cellValue;
            }
        }
        return $data;
    }

原文地址:https://www.cnblogs.com/mengor/p/8136365.html

时间: 2024-10-10 19:41:52

thinkphp5使用PHPExcel导出,导入Excel数据的相关文章

设置导出的excel数据

/** * 设置导出的excel数据 * @param type $objPHPExcel * @param type $colModel * @param type $grid */public function setExcelData($objPHPExcel, $colModel, $grid){ $table = $this->model->_table; for ($i = 0, $t = 0; $i < count($colModel); $i++) { $label =

结合bootstrap fileinput插件和Bootstrap-table表格插件,实现文件上传、预览、提交的导入Excel数据操作流程

1.bootstrap-fileinpu的简单介绍 在前面的随笔,我介绍了Bootstrap-table表格插件的具体项目应用过程,本篇随笔介绍另外一个Bootstrap FieInput插件的使用,整合两者可以实现我们常规的Web数据导入操作,导入数据操作过程包括有上传文件,预览数据,选择并提交记录等一系列操作. 关于这个插件,我在早期随笔<Bootstrap文件上传插件File Input的使用>也做了一次介绍,这是一个增强的 HTML5 文件输入控件,是一个 Bootstrap 3.x

SQL Server服务器上需要导入Excel数据的必要条件

SQL Server服务器上需要导入Excel数据,必须安装2007 Office system 驱动程序:数据连接组件,或者Access2010的数据库引擎可再发行程序包,这样就不必在服务器上装Excel了.

asp.net采用OLEDB方式导入Excel数据时提示:未在本地计算机上注册&quot;Microsoft.Jet.OLEDB.4.0&quot; 提供程序&quot;

asp.net采用OLEDB方式导入Excel数据时提示:未在本地计算机上注册"Microsoft.Jet.OLEDB.4.0" 提供程序" 笔者在项目中做做了一个从Excel表格中导入数据的模块.大体上asp.net项目中导入Excel大体分成三类: 1)采用c#内置方案System.Data.OleDb(限制较小, 通用) 2)采用Excel的COM组件(会有版本问题) 3)采用伪Excel文件.即使用文本流的方式根据需求自己定义数据格式.同时在服务端进行反格式化 笔者采

C#导入Excel数据

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using System.Data.OleDb; using test.App_Code; using System.Text.RegularExpressions; using Sy

(转)PLSQL Developer导入Excel数据

场景:近来在做加班记录的统计,主要是统计Excel表格中的时间,因为我对于Excel表格的操作不是很熟悉,所以就想到把表格中的数据导入到数据库中,通过脚本语言来统计,就很方便了!但是目前来看,我还没有完成最终统计的目的,只是将Excel中的数据导入到了数据库中了,所以未完待续! 最近处理将Excel数据导入Oracle的工作比较多.之前都是采用Sqlldr命令行导入的方式处理.每次导入不同格式的Excel表数据,都需要先把Excel文件由“.xls”格式转换为“.csv”格式,再手工根据Exce

windows命令行下导入excel数据到SQLite数据库

1.转换文件格式,防止中文乱码:将excel保存成"CSV(逗号分隔)(*.csv)"格式,关闭文件,用记事本打开刚才保存的.csv文件,然后另存为UTF-8格式文本.需要注意的是,经过这样的转换,数字也全变成文本了. 2.通过adb shell(adb.exe存放在android开发软件安装文件夹中,如 F:\Develope\Tools\adt-bundle-windows-x86\sdk\platform-tools\)更改sqlite数据库的使用权限.运行adb之前要先打开AV

在asp.net中导出表格Excel数据

第一步:需要引用org.in2bits.MyXls程序集到使用页面 第二步:前台代码 <asp:Button ID="LeadingOut" runat="server" Text="导出"  onclick="LeadingOut_Click" /> 第三步:在aspx文件的后台写按钮的点击事件 protected void LeadingOut_Click(object sender, EventArgs e)

Oracle导入excel数据快速方法

Oracle导入excel数据快速方法 使用PLSQL  Developer工具,这个可是大名鼎鼎的Oracle  DBA最常使用的工具.    在单个文件不大的情况下(少于100000行),并且目的表结构已经存在的情况下——对于excel而言肯定不会超过了,因为excel文件的最大行为65536——  可以全选数据复制,然后用PLSQL  Developer工具.    1  在PLSQL  Developer的sql  window里输入select  *  from  test  for 

导入Excel数据至数据库——思路整理

说明 背景: 导入Excel数据到数据库成为目前项目中很常用的技术,整理以前的实现发现:在原来系统中的导入,没有实现方法复用,如果要实现某一处数据的导入,需要将原来的代码复制过去.修修改改,实现过程较为复杂,实现类似的功能需要对原来的代码重新梳理,结合业务修改代码. 为了让每次相同的功能都不需要重复的开发,我们需要实现一种能够得到复用的程序功能. 目的: 如图所示 我们需要将Excel中的数据记录插入到DB的表中,如何实现? 转换 将Excel转换为List 将Excel转换为DataTable