thinkphp之Excel的导出

2016-03-22: 在github上传了一个demo,对导出进行了封装,只需调用thinkPHP的function中的exportExcel函数就可以啦,thinkPHP3.2实现excel导出


Excel的导出步骤:

1.下载phpexcel包,置于以下thinkphp框架路径。


内部还有一个文件夹和一个php文件


2.创建excel对象并设置excel对象的属性(ExportALLAction.class.php );

3.设置excel的行列样式(字体、高宽、颜色、边框、合并等)

4.绘制报表表头

5.将查询数据写入excel

6.设置excel的sheet的名称<

7.设置excel报表打开后初始的sheet

8.设置输出的excel的头参数及文件名

9.调用创建excel的方法生成excel文件

前端代码(可以用form表单提交,本例子用js跳转,只要能调到控制层函数就行):

<pre name="code" class="html"><div class="main">
	<p class="currentPosition"><a href="#">搜索</a>>业务员>A类</p>
	<p class="aButton"><span><input  type="button" value="导出" name="download" οnclick="exportdata()"/></span></p>
	<div>
		<div >
			<table>
				<thead>
					<tr>
					<th style="border:1px solid #DDD" > 序号</th>
					<th style="border:1px solid #DDD" > 姓名</th>
					<th style="border:1px solid #DDD" > 电话</th>
					<th style="border:1px solid #DDD" > 备注</th>
					</tr>
				</thead>
				<tbody>
					<volist name="data"  id="vo" key="k">
					    <tr style="line-height:1.5em">
							<td style="border:1px solid #DDD" ><{$k}></td>
							<td style="border:1px solid #DDD"><{$vo.clientname}></td>
							<td style="border:1px solid #DDD" ><{$vo.phone}></td>
							<td style="border:1px solid #DDD" ><{$vo.remark}></td>
						 </tr>
						<tr><tr>
					</volist>
				</tbody>
			</table>
		</div>
	</div>
</div>

<script language="javascript" type="text/javascript">
   function exportdata(){
	 window.location.href="__APP__/Admin/ExportALL/index/name/saler/type/A"; 
   }       
 </script>


 
控制层代码(前面部分是查数据,可以忽略,注意:ob_end_clean();//清除缓冲区,避免乱码) 

<?php
class ExportALLAction extends Action {  
    public function index(){  
		$name=$_GET['name'];
		$type=$_GET['type'];
		switch($name){
			case 'agent':{
				switch($type){
					case 'A':$data=M('agentclient')->where(array('type'=>1))->select();$filename="代理商A类";break;
					case 'B':$data=M('agentclient')->where(array('type'=>2))->select();$filename="代理商B类";break;
					case 'C':$data=M('agentclient')->where(array('type'=>3))->select();$filename="代理商C类";break;
					case 'D':$data=M('agentclient')->where(array('type'=>4))->select();$filename="代理商D类";break;
					case 'collect':$data=M('agentclient')->where(array('type'=>5))->select();$filename="代理商收藏";break;
					case 'black':$data=M('agentclient')->where(array('type'=>6))->select();$filename="代理商黑名单";break;
					default:break;
				}
			}break;
			case 'manager':{
				switch($type){
					case 'A':$data=M('managerclient')->where(array('type'=>1))->select();$filename="销售经理A类";break;
					case 'B':$data=M('managerclient')->where(array('type'=>2))->select();$filename="销售经理B类";break;
					case 'C':$data=M('managerclient')->where(array('type'=>3))->select();$filename="销售经理C类";break;
					case 'D':$data=M('managerclient')->where(array('type'=>4))->select();$filename="销售经理D类";break;
					case 'collect':$data=M('managerclient')->where(array('type'=>5))->select();$filename="销售经理收藏";break;
					case 'black':$data=M('managerclient')->where(array('type'=>6))->select();$filename="销售经理黑名单";break;
					default:break;
				}
			}break;
			case 'saler':{
				switch($type){
					case 'A':$data=M('salerclient')->where(array('type'=>1))->select();$filename="业务员A类";break;
					case 'B':$data=M('salerclient')->where(array('type'=>2))->select();$filename="业务员B类";break;
					case 'C':$data=M('salerclient')->where(array('type'=>3))->select();$filename="业务员C类";break;
					case 'D':$data=M('salerclient')->where(array('type'=>4))->select();$filename="业务员D类";break;
					case 'collect':$data=M('salerclient')->where(array('type'=>5))->select();$filename="业务员收藏";break;
					case 'black':$data=M('salerclient')->where(array('type'=>6))->select();$filename="业务员黑名单";break;
					default:break;
				}
			}break;
			default:break;
		
		}
		//P($data);
		//exit;
		$OrdersData=$data;
		if(!$OrdersData){
			echo"<h1 align='center'>没有数据</h1>";
			return;
		}
	//	P($OrdersData);
	//	exit;
        Vendor('PHPExcel.PHPExcel');
	    Vendor('PHPExcel.PHPExcel.IOFactory');
	    Vendor('PHPExcel.PHPExcel.Reader.Excel5');
        // Create new PHPExcel object  
        $objPHPExcel = new PHPExcel();  
        // Set properties  
        $objPHPExcel->getProperties()->setCreator("ctos")  
            ->setLastModifiedBy("ctos")  
            ->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");  
  
        //set width  
        $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(8);  
        $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20);  
        $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(20);  
        $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(20);  
  

        //设置行高度  
        $objPHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(22);  
  
        $objPHPExcel->getActiveSheet()->getRowDimension('2')->setRowHeight(20);  
  
        //set font size bold  
        $objPHPExcel->getActiveSheet()->getDefaultStyle()->getFont()->setSize(10);  
        $objPHPExcel->getActiveSheet()->getStyle('A2:D2')->getFont()->setBold(true);  
  
        $objPHPExcel->getActiveSheet()->getStyle('A2:D2')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);  
        $objPHPExcel->getActiveSheet()->getStyle('A2:D2')->getBorders()->getAllBorders()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);  
  
        //设置水平居中  
        $objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);  
        $objPHPExcel->getActiveSheet()->getStyle('A')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);  
        $objPHPExcel->getActiveSheet()->getStyle('B')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);  
		$objPHPExcel->getActiveSheet()->getStyle('C')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); 
        $objPHPExcel->getActiveSheet()->getStyle('D')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);  


        //  
        $objPHPExcel->getActiveSheet()->mergeCells('A1:N1');  
  
        // set table header content  
        $objPHPExcel->setActiveSheetIndex(0)  
            ->setCellValue('A1', $filename.'记录  时间:'.date('Y-m-d H:i:s'))  
			->setCellValue('A2', '编号') 
            ->setCellValue('B2', '姓名')  
            ->setCellValue('C2', '电话')  
            ->setCellValue('D2', '备注') ;
        // Miscellaneous glyphs, UTF-8  
        for($i=0;$i<=count($OrdersData)-1;$i++){  
            $objPHPExcel->getActiveSheet(0)->setCellValue('A'.($i+3), $i+1);  
            $objPHPExcel->getActiveSheet(0)->setCellValue('B'.($i+3), $OrdersData[$i]['clientname']);  
            $objPHPExcel->getActiveSheet(0)->setCellValue('C'.($i+3), $OrdersData[$i]['phone']);  
            $objPHPExcel->getActiveSheet(0)->setCellValue('D'.($i+3), $OrdersData[$i]['remark']);   
            $objPHPExcel->getActiveSheet()->getStyle('A'.($i+3).':D'.($i+3))->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);  
            $objPHPExcel->getActiveSheet()->getStyle('A'.($i+3).':D'.($i+3))->getBorders()->getAllBorders()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);  
            $objPHPExcel->getActiveSheet()->getRowDimension($i+3)->setRowHeight(16);  
			
        }   
        // Rename sheet  
        $objPHPExcel->getActiveSheet()->setTitle($filename.'记录');  
  
  
        // Set active sheet index to the first sheet, so Excel opens this as the first sheet  
        $objPHPExcel->setActiveSheetIndex(0);  
  
	ob_end_clean();//清除缓冲区,避免乱码
        // Redirect output to a client’s web browser (Excel5)  
        header('Content-Type: application/vnd.ms-excel');  
		$filenames=$filename.'('.date('Ymd-His').').xls';
        header("Content-Disposition: attachment;filename={$filenames}");  
        header('Cache-Control: max-age=0');  
  
        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');  
        $objWriter->save('php://output');  
  
    }  
}  
参考例程:http://blog.csdn.net/jimlong/article/details/8606005

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用ThinkPHP框架和PHPExcel类库导出Excel表格的步骤: 1.下载并安装PHPExcel类库,将下载的PHPExcel文件夹放入项目的vendor目录下。 2.创建一个控制器,例如ExcelController,并在控制器中添加一个export方法。 3.在export方法中,实例化PHPExcel类库,并设置Excel表格的属性,例如表格标题、表格列名等。 4.从数据库中获取需要导出的数据,并将数据填充到Excel表格中。 5.将Excel表格输出到浏览器,让用户可以下载。 以下是一个示例代码: ```php <?php namespace app\index\controller; use think\Controller; use PHPExcel; use PHPExcel_IOFactory; class ExcelController extends Controller { public function export() { // 实例化PHPExcel类库 $objPHPExcel = new PHPExcel(); // 设置Excel属性 $objPHPExcel->getProperties()->setCreator("ThinkPHP") ->setLastModifiedBy("ThinkPHP") ->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', '性别'); // 从数据库中获取数据 $data = db('user')->select(); // 将数据填充到Excel表格中 $i = 2; foreach ($data as $item) { $objPHPExcel->setActiveSheetIndex(0) ->setCellValue('A' . $i, $item['name']) ->setCellValue('B' . $i, $item['age']) ->setCellValue('C' . $i, $item['gender']); $i++; } // 输出Excel表格到浏览器 header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="user.xlsx"'); header('Cache-Control: max-age=0'); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); $objWriter->save('php://output'); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值