ThinkPHP中用PHPExcel导出excel文件数据例子

时间:2019-09-27 14:04来源:计算机教程
1.某列用条件格式等高级一点的操作应该也是可以的,没有试。 $city=[]; 1.下载下来的文件夹有3个文件夹和3个txt的说明文档(说明文档就不说了): 相对于laravelTP使用phpExcel比较麻烦,

1.某列用条件格式等高级一点的操作应该也是可以的,没有试。

$city=[];

1.下载下来的文件夹有3个文件夹和3个txt的说明文档(说明文档就不说了):

相对于laravel TP使用phpExcel比较麻烦,因为没有composer,所以必须先引入phpexcel文档

图片 1图片 2

$objPHPExcel->getActiveSheet()->setCellValue('C' .$row,$dataRow['sex'] );

在这个模板里面,你想在哪个位置显示什么样式就设置什么样式,到时候相对应位置 查出来的数据就会自动套用样式,比如说标题大小,背景颜色,用函数等,都会自动套用,就不用在后台代码控制那么麻烦了,这个也是选择用模板生成excel原因。

$excel_array=$obj_PHPExcel->getsheet(0)->toArray();//转换为数组格式

Documentation文件夹:说明文档,略过。

foreach($excel_arrayas$k=>$v){

图片 3

$objWriter= PHPExcel_IOFactory::createWriter ($objPHPExcel, 'Excel5' );//在内存中准备一个excel2003文件

2.大家要注意一点,我要输出的数据是从第4行开始填充的,但是最好留出一行空的,比如说第5行,并不仅仅为了查出来的数据和统计总数分开好看,也是为了方便在模板里面设置函数,比如说上面的D6,用了SUM(D4:D5)函数,我是想统计D这一列的数据,但是在D6函数不能仅仅是=SUM(D4)吧,等生成数据的时候就到达不了效果,查出来的数据就是统计D4这个了,所以记得留出一行

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

图片 4

class Excel extends Controller

下面给出步骤:

$objActSheet->setTitle('xxx');//设置excel的标题

结构目录的说明,

$path=dirname(__FILE__);//找到当前脚本所在路径

写最后:当然啦,我是做好了才截图上来的,所以还没有完善,还要处理一下问题滴,比如说乱码 啊(看你下载下来的有没有乱码咯)。

$objActSheet->setCellValue('A2','范围:'.time().'--'.time() 5000);

 

$PHPWriter->save("php://output");//表示在$path路径下面生成demo.xlsx文件

Tests文件夹:这个文件夹虽然不用导入到项目,但是里面满满的都是例子啊,都是给我们用的。我测试用的就是里面01simple-download-xls.php和30template.php这两个例子的代码结合在一起,分别是下载xls和加载模板的。

$PHPSheet->setTitle("demo");//给当前活动sheet设置名称

2.下载PHPExcel文件,网上一百度就出来了,下载下来解压后目录结构如下:(附件中也提供有下载,附件中的PHPExcel是经过我的压缩,把多余的东西删除了的)

$objActSheet=$objPHPExcel->getActiveSheet();

class IndexAction extends Action {
  /**导出的excel表格 */
  function index() {
    //将需要导出到excel的数据查询出来
    $mdata = M ( 'a' );
    $data = $mdata->select ();
  
    //开始生成excel内容
    /** 加载IOFactory包 */
    Vendor ( 'Excel.Classes.PHPExcel' ); //Vendor路径的写法参考ThinkPHP文档
  
    /** 错误信息 */
    error_reporting ( E_ALL );
  
    $objReader = PHPExcel_IOFactory::createReader ( 'Excel5' ); //在内存中建一个excel2003操作
    //加载需要读取的模板放在内存的excel中,路径一定要对啊,我在index.php中用了define(ROOT, dirname(__FILE__));所以下面这样写
    $objPHPExcel = $objReader->load ( ROOT . "/Pulice/template/template.xls" );
  
    //设置excel格式
    //$objPHPExcel->getActiveSheet ()->setCellValue ( 'B1', '统计表' ); //在B位置显示标题,可以动态添加,这个例子中我是在母版中写死了的
    $objPHPExcel->getActiveSheet ()->setCellValue ( 'E1', date ( 'Y-m-d H:i:s', time () ) ); //在E位置显示时间
  
    /**将数据用循环放进表格相对应位置S*/
    $baseRow = 5; //数据从5-1行开始往下输出,具体数据看你的模板了
  
    foreach ( $data as $r => $dataRow ) {
      $row = $baseRow $r;
      $objPHPExcel->getActiveSheet ()->insertNewRowBefore ( $row, 1 ); //插入新的行
   
      //将数据填充到相对应的位置
      $objPHPExcel->getActiveSheet ()->setCellValue ( 'A' . $row, $r 1 ); //序号
      $objPHPExcel->getActiveSheet ()->setCellValue ( 'B' . $row, $dataRow ['codenum'] ); //编号
      $objPHPExcel->getActiveSheet ()->setCellValue ( 'C' . $row, $dataRow ['name'] ); //物品名称
      $objPHPExcel->getActiveSheet ()->setCellValue ( 'D' . $row, $dataRow ['price'] ); //单价
      $objPHPExcel->getActiveSheet ()->setCellValue ( 'E' . $row, $dataRow ['quantity'] ); //数量
    }
    $objPHPExcel->getActiveSheet ()->removeRow ( $baseRow - 1, 1 ); //作用:把最顶上面的那一空白行去掉
    //---------上面的代码是从30template.php(加载模板)中copy下来自己改成我想要————————————————
  
    //  ----------下面的代码是从01simple-download-xls.php(下载excel表格)中copy下来的-------
    //将得到的数据导出到excel中提供给用户下载
  
    // 将输出重新定向到客户端浏览器的(Excel5)
    $filename = date ( 'Y-m-d', time () );
    header ( 'Content-Type: application/vnd.ms-excel' );
    header ( 'Content-Disposition: attachment;filename="' . $filename . '.xls"' ); //要下载的excel文件的文件名,这设置了用当前时间作为文件名
    header ( 'Cache-Control: max-age=0' );
  
    $objWriter = PHPExcel_IOFactory::createWriter ( $objPHPExcel, 'Excel5' ); //在内存中准备一个excel2003文件
    $objWriter->save ( 'php://output' );
    exit ();
  }
}

 {$row=$baseRow $r;//将数据填充到相对应的位置,对应上面输出的列头

1.准备:自己制作一个生成的Excel参考的模板文件,template.xls,我的模板为

$PHPSheet->setCellValue("A2","张三")->setCellValue("B2","2121");//表格数据

图片 5

$objActSheet->setCellValue('B3','姓名');

当然啦,想根据条件来导出内容就看你怎么查数据库咯。

$PHPSheet->setCellValue("A1","姓名")->setCellValue("B1","分数");//表格数据

Classes文件夹:这个文件夹是PHPExcel的主要包,也就是说只要把这个文件夹拷贝到项目,引用就可以了。这个文件夹下面有PHPExcel.php文件和PHPExcel文件夹,引用的时候用PHPEx.php就可以了。

$objWriter->save ('php://output');

 代码如下

    function excel(){

3.新建一个项目,导入ThinkPHP,配置好index.php,配置文件,在Public文件夹下面放我们的excel.模板文件。特别的,在ThinkPHP下面的Extend文件夹下新建文件夹Vendor,把PHPExcel复制到其根目录下。因为ThinkPHP中用PHPExcel不能通过

$objActSheet->setCellValue('C3','性别');//具体有多少列,有多少就写多少,跟下面的填充数据对应上就可以

6.在IndexAction中的index()内写如下方法

{

附:

$city[$k]['pcode']=$v[3];

5.我的项目目录如下:

header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');

7.在模板页调用上面的方法就可以了,比如<a href="{:U('Index/outexcel')}">导出excel</a>

参考链接:http://blog.csdn.net/will5451/article/details/51315267

require  './include/phpexcel/Classes/PHPExcel.php';这样加载,只能是用Vendor()加载第三方类库方式加进去。(这个很重要,我之前一直不成功原因就是在这里)

header( 'Cache-Control: max-age=0');

$this->display("User:xx");//跨模块分配页面User模块xx.html

$baseRow= 4;//数据从N-1行开始往下输出 这里是避免头信息被覆盖

}

array_shift($excel_array);//删除第一个数组(标题);

}

Db::name('city')->insertAll($city);//批量插入数据

$objPHPExcel->getActiveSheet()->setCellValue('A' .$row,$dataRow['id'] );

$PHPExcel=newPHPExcel();

$objPHPExcel->getActiveSheet()->setCellValue('B' .$row,$dataRow['name'] );

但是没有命名空间使用use因不进去,所以需要手动引入

//创建一个读Excel模板的对象$objReader=PHPExcel_IOFactory::createReader('Excel5');$objPHPExcel=$objReader->load ("template.xls");//读取模板,模版放在根目录

$info=$file->validate(['ext'=>'xlsx'])->move(ROOT_PATH.'public'.DS.'uploads');

}

//获取表单上传文件

//获取当前活动的表

excel表格数据导入数据库:

编辑:计算机教程 本文来源:ThinkPHP中用PHPExcel导出excel文件数据例子

关键词: