php动态导出数据成Excel表格
一、封装 Excel 导出类
include/components/ExecExcel.php
<?php
/***
* @Excel 导入导出类。
*/
class ExecExcel {
/***
* @导出方法
* @$font excel第一行的提示信息,
* 要求:一定要与数据库中取出的字段对应
* $data 数据库取出的数据
* 要求:只能传递需要导出的字段,否则会数据错乱。
*/
public static function Export($font,$data){
//@获得对象
$Obj=ExecExcel::getObject();
//@获得当前活动 sheet 操作对象
$objSheet=$Obj->excel->getActiveSheet();
//@获得操作的表格字母
$letter=$Obj->getLetter($font);
//@设置当前 sheet 名称
$objSheet->setTitle("dakayungou");
//@Excel写入头部提示信息
foreach ($font as $ak=>$av){
$objSheet->setCellValue($letter[$ak].'1',$av);
}
//@Excel写入数据
foreach ($data as $dk=>$dv){
$num=$dk+2;
$dv=array_values($dv);
foreach ($dv as $k=>$d){
//@自动设置单元格宽度
$objSheet -> getColumnDimension($letter[$k]) -> setAutoSize(true);
//@设置单元格为文本格式
$objSheet->getStyle($letter[$k])->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
$objSheet->setCellValueExplicit($letter[$k].$num,$d,PHPExcel_Cell_DataType::TYPE_STRING);
}
}
//@销毁变量
unset($data);
unset($font);
//@header头声明为下载
header('Content-Type:application/vnd.ms-excel');
header('Content-Disposition:attachment;filename=demo.xls');
header('Cache-Control:max-age=0');
//@传入当前实例对象,生成指定格式文件
$objWrite=PHPExcel_IOFactory::createWriter($Obj->excel,'Excel5');
//@输出到浏览器
$objWrite->save("php://output");
}
//@获取对应字母方法
protected function getLetter($font){
//@生成26个字母
$letter=range('A','Z');
//@计算字母长度
$letter_long=count($letter);
//@存储遍历好的数据
$array=array();
//@遍历数组
foreach ($font as $k=>$f){
$temp='';
//@如果长度大于26
$last=substr($k/$letter_long,0,1);
if($last>0){
$temp.=$letter[$last-1];
}
$temp.=$letter[$k%$letter_long];
$array[$k]=$temp;
}
//@销毁变量
unset($font);
//@返回拼接好的数组
return $array;
}
//@用来存储该对象
private static $object;
//@用来保存Excel对象
protected $excel=null;
//@
//@
private function __construct(){
Yii::import('application.vendors.*');
require 'PHPExcel.php';
$this->excel= new PHPExcel();
}
//@私有克隆
private function __clone(){
}
//@获取对象方法
public static function getObject(){
if(self::$object instanceof self){
return self::$object;
}else{
return self::$object=new self;
}
}
}
二、封装执行sql文件
include/components/ExecSql.php
<?php
/***
* @执行 sql 类。
*/
class ExecSql {
//@执行sql方法【获取所有】
public static function All($sql){
//@获得数据库对象
$connection = Yii::app()->db;
//@执行传递过来的sql
return $connection->createCommand($sql)->queryALL();
}
//@执行sql方法【获取第一条】
public static function One($sql){
//@获得数据库对象
$connection = Yii::app()->db;
//@执行传递过来的sql
return $connection->createCommand($sql)->queryRow();
}
}
三、控制器层代码
<?php
class OrderController extends JController
{
public function actionExport()
{
//@获得下载的数据id
$ids=isset($_POST['ids'])?htmlentities($_POST['ids']):0;
//@判断id合法性
if (!$ids) {
$this->error("参数错误请重试");
die;
}
//@去除两边的逗号
$ids=trim($ids,',');
//@拼接sql
$sql='select name,phone,first,second,third,address,remark,orderno from `orders_win` where id in('.$ids.')';
//@获取所有数据
$all=ExecSql::All($sql);
//@判断数据合法性
if(empty($all)){
$this->error("参数错误请重试");
die;
}
//@excel第一行显示信息
$font=array('姓名','联系号码','省','市','区','地址','备注','订单号');
//@调用导出
ExecExcel::Export($font,$all);
}
}
结束。
php动态导出数据成Excel表格的更多相关文章
- 导出数据到Excel表格
开发工具与关键技术:Visual Studio 和 ASP.NET.MVC,作者:陈鸿鹏撰写时间:2019年5月25日123下面是我们来学习的导出数据到Excel表格的总结首先在视图层写导出数据的点击 ...
- Java操作Jxl实现导出数据生成Excel表格数据文件
实现:前台用的框架是Easyui+Bootstrap结合使用,需要引入相应的Js.Css文件.页面:Jsp.拦截请求:Servlet.逻辑处理:ClassBean.数据库:SQLserver. 注意: ...
- Python导出数据到Excel表格-NotImplementedError: formatting_info=True not yet implemented
在使用Python写入数据到Excel表格中时出现报错信息记录:“NotImplementedError: formatting_info=True not yet implemented” 报错分析 ...
- PHP批量导出数据为excel表格
之前用插件phoexcel写过批量导入数据,现在用到了批量导出,就记录一下,这次批量导出没用插件,是写出一个表格,直接输出 //$teacherList 是从数据库查出来的二维数组 $execlnam ...
- spring boot 使用POI导出数据到Excel表格
在spring boot 的项目经常碰到将数据导出到Excel表格的需求,而POI技术则对于java操作Excel表格提供了API,POI中对于多种类型的文档都提供了操作的接口,但是其对于Excel表 ...
- Excel VBA ——如何导出数据到excel表格
sub OutPut() Dim FileTitle, MyPath, MyFullName As String Application.ScreenUpdating = false '关闭表格公式的 ...
- Java导出数据生成Excel表格
事先准备: 工具类: package com.wazn.learn.util.export; import java.sql.Connection; import java.sql.DriverMan ...
- PHP:引用PhpExcel导出数据到excel表格
我使用的是tp3.2框架(下载地址:http://www.thinkphp.cn/topic/38123.html) 1.首先要下载PhpExcel类库,放在如下图目录下 2.调用方法 public ...
- pl/sql developer导出数据到excel的方法
http://yedward.net/?id=92 问题说明:使用pl/sql developer导出数据到excel表格中是非常有必要的,一般的可能直接在导出的时候选择csv格式即可,因为该格式可以 ...
随机推荐
- [jzoj 5926] [NOIP2018模拟10.25] naive 的图 解题报告(kruskal重构树+二维数点)
题目链接: https://jzoj.net/senior/#main/show/5926 题目: 题解: 显然最小的最大路径在最小生成树上(最小生成树=最小瓶颈生成树) 于是我们建出kruskal重 ...
- [JZOJ NOIP2018模拟10.21]
考试之前我刚刚领略到了特判的重要性,没想到T2的两个子任务还是写挂了,丢了20分 考试的感觉不行,一路打的都是暴力,正解的思路想到一半就断了推不下去 T1:逛公园 题目链接: https://jzoj ...
- [poj 3349] Snowflake Snow Snowflakes 解题报告 (hash表)
题目链接:http://poj.org/problem?id=3349 Description You may have heard that no two snowflakes are alike. ...
- 【转载】大型系统中使用JMS优化技巧
[本文转自:http://www.javabloger.com/article/sun-openmq-jms-large-scale-systems.html] 我们先来看看在Sun OpenMQ系统 ...
- hiho160周 - 字符串压缩,经典dp
题目链接 小Hi希望压缩一个只包含大写字母'A'-'Z'的字符串.他使用的方法是:如果某个子串 S 连续出现了 X 次,就用'X(S)'来表示.例如AAAAAAAAAABABABCCD可以用10(A) ...
- hiho1041 - 树,遍历
题目链接 给一棵树,给一个序列,问能不能按这个序列遍历这棵树,满足每条边最多经过两次. -------------------------------------------------------- ...
- WordPress 不错的插件
Akismet – 防止垃圾评论 WP-PostViews Plus - 页面访问量统计 All in One SEO Pack – 搜索引擎优化的插件,自动优化搜索引擎. WP Super Cach ...
- JavaScript设计模式(biaoyansu)(2)
单例模式实例 (创建类模式): let elBalance = document.getElementById('balance') function init () { var a = new Di ...
- 【Henu ACM Round#24 C】Quiz
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 肯定是这样 先放k-1个,然后空1个,然后再放k-1个.然后再空1个.. 以此类推. 然后如果(n/k)*(k-1)+n%k> ...
- 为什么button在设置标题时要用一个方法,而不像lable一样直接用一个属性
为什么button在设置标题时要用一个方法.而不像lable一样直接用一个属性 原因是有时我们对 button做一次点击,须要改变button的标题.仅仅实用方法才干做到,而label是标签 ...