php导出execl数据

提供两种导出excel方法


1 最简单的导出excel


   header('Content-Type: application/vnd.ms-excel'); //设置文件类型   也可以将 vnd.ms-excel' 改成xml(导出xml文件)
   header('Content-Disposition: attachment;filename="云平台用户报表.xls"'); //设置导出的excel的名字
   header('Cache-Control: max-age=0');


   echo iconv("utf-8","gbk","时间\t错误码\t出现次数\t错误码含义\n");  //  \t是制表符 \n是换行符
   foreach ($arr as $key=>$val){   //$arr 是所要导出的数据
    echo iconv("utf-8","gbk",date("Y-m-d",$val["time"])."\t".$val["error_code"]."\t".$val["num"]."\t".$val["code_mean"]."\n");
   }


 


2.使用phpexcel导出excel


到网上下载phpexcel压缩包 将phpexcel.php 和phpexcel压缩包放入你的项目中


实例:


 require_once ('PHPExcel.php');   //引用这两个文件
 require_once ('PHPExcel/Writer/Excel2007.php');


  //导出excel
  $objExcel = new PHPExcel();
  $objProps = $objExcel->getProperties();
  $objProps->setCreator("Zeal Li");
  $objProps->setLastModifiedBy("Zeal Li");
  $objProps->setTitle("Office XLS Test Document");
  $objProps->setSubject("Office XLS Test Document, Demo");
  $objProps->setDescription("Test document, generated by PHPExcel.");
  $objProps->setKeywords("office excel PHPExcel");
  $objProps->setCategory("Test");
  $objProps = $objExcel->getProperties();
  $objProps->setCreator("Zeal Li");
  $objProps->setLastModifiedBy("Zeal Li");
  $objProps->setTitle("Office XLS Test Document");
  $objProps->setSubject("Office XLS Test Document, Demo");
  $objProps->setDescription("Test document, generated by PHPExcel.");
  $objProps->setKeywords("office excel PHPExcel");
  $objProps->setCategory("Test");


  //*************************************
  //设置当前的sheet索引,用于后续的内容操作。
  //一般只有在使用多个sheet的时候才需要显示调用。
  //缺省情况下,PHPExcel会自动创建第一个sheet被设置SheetIndex=0
  $objExcel->setActiveSheetIndex(0);


  $objActSheet = $objExcel->getActiveSheet();


//网游类
  
  //设置当前活动sheet的名称
  $objActSheet->setTitle('网游类');


  $objActSheet->setCellValue('A1','游戏名称');   //生成的excel中第一个sheet里面的第一行数据
  $objActSheet->setCellValue('B1','具体域名');
  $objActSheet->setCellValue('C1','服务器描述');
  $objActSheet->setCellValue('D1','线路属性');
  $objActSheet->setCellValue('E1','提交的服务器IP');
  $objActSheet->setCellValue('F1','对应优化路由条目');
  $objActSheet->setCellValue('G1','关键字优化');
  $objActSheet->setCellValue('H1','优化线路');
  $objActSheet->setCellValue('I1','优化状态');


  foreach($result_webgame as $k1=>$v1){   //遍历从数据库中读取的数据
   $objActSheet->setCellValue('A'.($k1+2),$v1["gamename"]); 
   $objActSheet->setCellValue('B'.($k1+2),$v1['domain']);
   $objActSheet->setCellValue('C'.($k1+2),$v1['gameserver']);
   $objActSheet->setCellValue('D'.($k1+2),$v1['line_attribute']);
   $objActSheet->setCellValue('E'.($k1+2),$v1['server_ip']);
   $objActSheet->setCellValue('F'.($k1+2),$v1['optimize_route']);
   $objActSheet->setCellValue('G'.($k1+2),$v1['keyword']);
   $objActSheet->setCellValue('H'.($k1+2),$v1['line']);
   $objActSheet->setCellValue('I'.($k1+2),$v1['optimize_status']);
  }
  
//网站类


  //添加一个新的worksheet
  $objExcel->createSheet();
  $reource_ready=$objExcel->getSheet(1)->setTitle('网站类');
   
  $reource_ready->setCellValue('A1','网站名称'); 
  $reource_ready->setCellValue('B1','具体域名');
  $reource_ready->setCellValue('C1','线路属性');
  $reource_ready->setCellValue('D1','IP网段');
  $reource_ready->setCellValue('E1','优化线路');
  $reource_ready->setCellValue('F1','优化状态');
  
  foreach($result_website as $k1=>$v2){
   $reource_ready->setCellValue('A'.($k1+2),$v2["name"]); 
   $reource_ready->setCellValue('B'.($k1+2),$v2['domain']);
   $reource_ready->setCellValue('C'.($k1+2),$v2['line_attribute']);
   $reource_ready->setCellValue('D'.($k1+2),$v2['ip']);
   $reource_ready->setCellValue('E'.($k1+2),$v2['line']);
   $reource_ready->setCellValue('F'.($k1+2),$v2['optimize_status']);
  }
  


//以此类推 可以导出含有多个sheet的excel
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现导出Excel时的进度条,可以通过以下步骤实现: 1. 在前端页面中添加一个进度条,并设置其初始值为0。 2. 在后端PHP代码中,使用xlsxwriter库生成Excel文件。 3. 在生成Excel文件的过程中,通过进度条的方式实时更新进度条的值。 4. 将生成的Excel文件返回给前端页面,供用户下载。 具体实现方式如下: 1. 前端页面中添加进度条 可以使用Bootstrap框架中的进度条组件实现。在HTML文件中添加以下代码: ``` <div class="progress"> <div class="progress-bar" role="progressbar" style="width: 0%;" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100"></div> </div> ``` 2. 后端PHP代码中使用xlsxwriter库生成Excel文件 可以在PHP文件中使用xlsxwriter库生成Excel文件,如下所示: ``` $workbook = new \XLSXWriter(); $workbook->writeSheetHeader('Sheet1', array('Column 1', 'Column 2', 'Column 3')); for ($i = 0; $i < 100; $i++) { $data = array('Row ' . ($i+1) . ' Col 1', 'Row ' . ($i+1) . ' Col 2', 'Row ' . ($i+1) . ' Col 3'); $workbook->writeSheetRow('Sheet1', $data); } $workbook->writeToFile('example.xlsx'); ``` 3. 生成Excel文件时更新进度条的值 在生成Excel文件时,可以根据当前的进度计算出进度条的值,并将其返回给前端页面。可以使用以下代码实现: ``` $progress = 0; $step = 100 / 100; $workbook = new \XLSXWriter(); $workbook->writeSheetHeader('Sheet1', array('Column 1', 'Column 2', 'Column 3')); for ($i = 0; $i < 100; $i++) { $data = array('Row ' . ($i+1) . ' Col 1', 'Row ' . ($i+1) . ' Col 2', 'Row ' . ($i+1) . ' Col 3'); $workbook->writeSheetRow('Sheet1', $data); $progress += $step; echo '<script>$(".progress-bar").css("width", "' . $progress . '%").attr("aria-valuenow", ' . $progress . ');</script>'; ob_flush(); flush(); } $workbook->writeToFile('example.xlsx'); ``` 在上述代码中,$progress变量保存了当前的进度,$step变量表示每次的进度步长。在每次循环中,都会计算出当前的进度,并将其返回给前端页面。 其中,ob_flush()和flush()函数用于刷新PHP输出缓冲区,使得前端页面能够实时接收到更新后的进度条的值。 4. 将生成的Excel文件返回给前端页面 在生成Excel文件后,可以通过以下代码将文件返回给前端页面: ``` header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment; filename="example.xlsx"'); readfile('example.xlsx'); exit; ``` 在上述代码中,header()函数用于设置HTTP响应头,readfile()函数用于将文件内容输出到浏览器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值