利用phpexcel对数据库数据的导入excel(excel筛选)、导出excel


Posted in PHP onApril 27, 2017

话不多说,请看代码:

<?php
date_default_timezone_set("PRC"); 
error_reporting(E_ALL);
error_reporting(0);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />');

require_once ('../Classes/PHPExcel.php');
require_once("config.php");
require_once("mysql.class.php");

//根据时间生成采购报表
$time = date("a");
$minute = date("i");
$apm = "";
if($time=='pm'){
 $apm = $time;
 $stime = mktime(12,00,00,date('m'),date('d')-1,date('Y'));
 $etime = mktime(11,59,59,date('m'),date('d'),date('Y'));
}else{
 $apm = $time;
 $stime = mktime(12,00,00,date('m'),date('d')-1,date('Y'));
 $etime = mktime(11,59,59,date('m'),date('d'),date('Y'));
}

//实例化excel类
$objPHPExcel = new PHPExcel();

////////获取文档信息
////////$objProps = $objPHPExcel->getProperties();
///////print_r($objProps);
///////echo "<br/>";
///////$objProps->setDescription("test_123456");
///////print_r($objProps);

$objPHPExcel->setActiveSheetIndex(0)
  ->setCellValue('A5','商品编码')
  ->setCellValue('B5','货号')
  ->setCellValue('C5','商品名称')
  ->setCellValue('D5','采购量');

//设置选定sheet表名
$objPHPExcel->getActiveSheet()->setTitle('祖名');
//设置字体样式
$objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setName('Arial')->setSize(25);//////->setUnderline(true);/////->getColor()->setARGB('FFFF0000');///->setBold(true);
//合并单元格 给单元格赋值(数值,字符串,公式)
$objPHPExcel->getActiveSheet()->mergeCells('A1:D3')->setCellValue('A1', 'zhongyi清单');
///////$objPHPExcel->getActiveSheet()->mergeCells('A4:D4')->setCellValue('A4', "=SUM(E4:F4)");

$date_now = date("Y-m-d");
$objPHPExcel->getActiveSheet()->mergeCells('A4:D4')->setCellValue('A4', "采购日期:".$date_now." ".$apm." ");
//设置单列宽度
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(15);
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20);//$objPHPExcel->getActiveSheet()->getColumnDimension('G')->setRowHeight(50);/
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(44);
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(15);

//大边框样式 边框加粗
$lineBORDER = array(
 'borders' => array(
 'outline' => array(
  'style' => PHPExcel_Style_Border::BORDER_THICK,
  'color' => array('argb' => '000000'),
 ),
 ),
);
//表头样式
$head = array(
 'font' => array(
 'bold' => true
 ),
 'alignment' => array(
  'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
  'vertical' => PHPExcel_Style_Alignment::VERTICAL_CENTER
  ),

);
//标题样式
$title = array(
 'font' => array(
 'bold' => true
 ),
);
//居中对齐
$CENTER = array(
 'alignment' => array(
  'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
  'vertical' => PHPExcel_Style_Alignment::VERTICAL_CENTER
 ),
);
//靠右对齐
$RIGHT = array(
 'alignment' => array(
  'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_RIGHT,
  'vertical' => PHPExcel_Style_Alignment::VERTICAL_CENTER
 ),
);
//细边框样式
$linestyle = array(
 'borders' => array(
 'outline' => array(
  'style' => PHPExcel_Style_Border::BORDER_THIN,
  'color' => array('argb' => 'FF000000'),
 ),
 ),
);

$objPHPExcel->getActiveSheet()->getStyle('A1:D3')->applyFromArray($head);///->getAlignment()->getHorizontal('');///->getBorders()->getTop()->setBorderStyle('');
//->setWrapText(true);自动换行
$objPHPExcel->getActiveSheet()->getStyle('A4:D4')->applyFromArray($RIGHT); 
$objPHPExcel->getActiveSheet()->getStyle('A5:D5')->applyFromArray($title); 

//填充色
/////$objPHPExcel->getActiveSheet()->getStyle('A1')->getFill()->getStartColor()->setARGB('FFFF0000');/

//插入数据
$dsql->Execute('omebrand_list',"select i.goods_id , sum( `nums` ) AS num, i.name,i.addon,i.price,g.bn as b,i.bn as h,
g.goods_id,i.goods_id,i.order_id
FROM `sdb_b2c_order_items` as i,sdb_b2c_goods as g
WHERE i.order_id in (select order_id from sdb_b2c_orders where status ='active' and createtime between $stime and $etime) and i.goods_id=g.goods_id and g.cat_id=173 GROUP BY h");
$m = 0;
 unset($re);
 while($row=$dsql->GetObject('omebrand_list'))
 {  $re[$m] = get_object_vars($row);
 $m++;
 }
$row_count = 5;
$objPHPExcel->setActiveSheetIndex(0)
  ->setCellValue('A6', 12325416541)
  ->setCellValue('B6', 4962132165262)
  ->setCellValue('C6', 121515212515241521)
  ->setCellValue('D6', 96215465415);
foreach($re as $r => $dataRow) {
 $baseRow = 6;
 $row = $baseRow + $r;
 $bn=$dataRow[h];
 $goods_id = $dataRow[goods_id];
  $spec_value = "";
  $aa = unserialize($dataRow[addon]);
  if ($aa['product_attr']){
  foreach ($aa['product_attr'] as $arr_special_info) {
   $spec_value = $arr_special_info['value'];
  }
  }

  preg_match_all('/\\-?\\d+\\.?\\d*/i',$spec_value,$row1);
  $num = $row1[0][0];
  $all = $num*$dataRow[num];
 if($spec_value==''){
 $all=$dataRow['num'];
 //$prce=$dataRow[price];
 }
 $objPHPExcel->setActiveSheetIndex(0)
  ->setCellValue('A'.$row, $dataRow['b'])
  ->setCellValue('B'.$row, $bn)
  ->setCellValue('C'.$row, $dataRow['name'])
  ->setCellValue('D'.$row, $all);
 $objPHPExcel->getActiveSheet()->getStyle('A'.$row_count)->applyFromArray($linestyle);  
 $objPHPExcel->getActiveSheet()->getStyle('B'.$row_count)->applyFromArray($linestyle);
 $objPHPExcel->getActiveSheet()->getStyle('C'.$row_count)->applyFromArray($linestyle);
 $objPHPExcel->getActiveSheet()->getStyle('D'.$row_count)->applyFromArray($linestyle);  

 $baseRow++;
 $row_count++;
}
$objPHPExcel->getActiveSheet()->getStyle('A'.$row_count)->applyFromArray($linestyle);  
$objPHPExcel->getActiveSheet()->getStyle('B'.$row_count)->applyFromArray($linestyle);
$objPHPExcel->getActiveSheet()->getStyle('C'.$row_count)->applyFromArray($linestyle);
$objPHPExcel->getActiveSheet()->getStyle('D'.$row_count)->applyFromArray($linestyle); 
$objPHPExcel->getActiveSheet()->getStyle('A5:D'.$row_count)->applyFromArray($CENTER); 
$objPHPExcel->getActiveSheet()->getStyle('A1:D'.$row_count)->applyFromArray($lineBORDER);

//设置打印页边距
$objPHPExcel->getActiveSheet()->getPageMargins()->setTop(0);
$objPHPExcel->getActiveSheet()->getPageMargins()->setRight(0);
$objPHPExcel->getActiveSheet()->getPageMargins()->setLeft(0);
$objPHPExcel->getActiveSheet()->getPageMargins()->setBottom(0);
//设置纸张类型
$objPHPExcel->getActiveSheet()->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4);
//设置自动筛选
$objPHPExcel->getActiveSheet()->setAutoFilter('A5:D'.$row_count);
//设置自动换行
$objPHPExcel->getActiveSheet()->getStyle('B6:B'.$row_count)->getAlignment()->setWrapText(true);
//设置格式化数字
$objPHPExcel->getActiveSheet()->getStyle('A6:A'.$row_count)->getNumberFormat()->setFormatCode('0000000000');

//设置安全级别
$md=md5(time());
$md=substr($md,0,8);
$objPHPExcel->getActiveSheet()->getProtection()->setPassword("$md");
$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true);//
$objPHPExcel->getActiveSheet()->getProtection()->setSort(true);
$objPHPExcel->getActiveSheet()->getProtection()->setInsertRows(true);
$objPHPExcel->getActiveSheet()->getProtection()->setFormatCells(true);

//添加图片 
/*
$obj=$objPHPExcel->getActiveSheet();
$objDrawing = new PHPExcel_Worksheet_Drawing(); 
$objDrawing->setName('wsyImg'); 
$objDrawing->setDescription('Image inserted by zhy'); 
$objDrawing->setPath('./wsy.jpg'); 
$objDrawing->setHeight(50); 
$objDrawing->setCoordinates('H23'); 
$objDrawing->setOffsetX(60); 
$objDrawing->setRotation(-10); /
$objDrawing->getShadow()->setVisible(true); 
$objDrawing->getShadow()->setDirection(-20); / 
$objDrawing->setWorksheet($obj);
*/

//页眉页脚
//$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddHeader('zhy'); 
//$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddFooter('end'); 

$objPHPExcel->setActiveSheetIndex(0);
$tname=date('Y-m-dH',time());
$tnam=iconv('UTF-8','GBK','祖名订单');
$tname=$tnam.$tname;

// Excel 2007保存
//$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel); 
//$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); 

// Excel 5保存 
//$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel); 
//$objWriter->save(str_replace('.php', '.xls', __FILE__)); 

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save(str_replace('.php', '.xls', __FILE__));

//$url = "/data/home/htdocs/ec/public/files/".date("Y")."/".date("Ym")."/";
createDir($url);
function createDir($dir) {
 if (!is_dir ($dir )) {
 mkdir($dir, 0777, true);
 chmod($dir, 0777); 
 chown( $dir, 'daemon' );
 chgrp( $dir, 'daemon' );  
 }
}
$name='forexmple_excel';
rename(str_replace('.php', '.xls', __FILE__), $name.'.xls');
?>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

PHP 相关文章推荐
如何对PHP程序中的常见漏洞进行攻击(下)
Oct 09 PHP
php 无限级数据JSON格式及JS解析
Jul 17 PHP
使用php记录用户通过搜索引擎进网站的关键词
Feb 13 PHP
PHP中isset()和unset()函数的用法小结
Mar 11 PHP
CI(CodeIgniter)框架中的增删改查操作
Jun 10 PHP
PHP中的命名空间相关概念浅析
Jan 22 PHP
PHP面向对象详解(三)
Dec 07 PHP
Zend Framework缓存Cache用法简单实例
Mar 19 PHP
php文件操作小结(删除指定文件/获取文件夹下的文件名/读取文件夹下图片名)
May 09 PHP
Thinkphp自定义代码生成工具及用法说明(附下载地址)
May 27 PHP
PHP PDOStatement::setAttribute讲解
Feb 01 PHP
实例讲解PHP表单验证功能
Feb 15 PHP
PHP实现网页内容html标签补全和过滤的方法小结【2种方法】
Apr 27 #PHP
PHP实现的常规正则验证helper公共类完整实例
Apr 27 #PHP
php上传excel表格并获取数据
Apr 27 #PHP
PHP基于SMTP协议实现邮件发送实例代码
Apr 27 #PHP
PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】
Apr 27 #PHP
PHP使用第三方即时获取物流动态实例详解
Apr 27 #PHP
利用PHPExcel实现Excel文件的写入和读取
Apr 26 #PHP
You might like
PHP查询MySQL大量数据的时候内存占用分析
2011/07/22 PHP
php中通过数组进行高效随机抽取指定条记录的算法
2013/09/09 PHP
PHP读取文件的常见几种方法
2016/11/03 PHP
php中static 静态变量和普通变量的区别
2016/12/01 PHP
PHP基于SPL实现的迭代器模式示例
2018/04/22 PHP
Yii 框架控制器创建使用及控制器响应操作示例
2019/10/14 PHP
Laravel5.1 框架Middleware中间件基本用法实例分析
2020/01/04 PHP
PHP开发api接口安全验证操作实例详解
2020/03/26 PHP
JavaScript的目的分析
2007/01/05 Javascript
Extjs在exlipse中设置自动提示的方法
2010/04/07 Javascript
js下将字符串当函数执行的方法
2011/07/13 Javascript
封装了一个js图片轮换效果的函数
2011/09/28 Javascript
简单的Jquery遮罩层代码实例
2013/11/14 Javascript
整理Javascript基础语法学习笔记
2015/11/29 Javascript
轻松5句话解决JavaScript的作用域
2016/07/15 Javascript
jquery判断页面网址是否有效的两种方法
2016/12/11 Javascript
从零学习node.js之利用express搭建简易论坛(七)
2017/02/25 Javascript
vue实现在表格里,取每行的id的方法
2018/03/09 Javascript
对angular2中的ngfor和ngif指令嵌套实例讲解
2018/09/12 Javascript
Vue js with语句原理及用法解析
2020/09/03 Javascript
解决vscode进行vue格式化,会自动补分号和双引号的问题
2020/10/26 Javascript
Python编写屏幕截图程序方法
2015/02/18 Python
Python中运行并行任务技巧
2015/02/26 Python
django项目搭建与Session使用详解
2018/10/10 Python
Python3获取拉勾网招聘信息的方法实例
2019/04/03 Python
浅谈python图片处理Image和skimage的区别
2019/08/04 Python
用python生成与调用cntk模型代码演示方法
2019/08/26 Python
Bootstrap File Input文件上传组件
2020/12/01 HTML / CSS
乌克兰在线药房:Аптека24
2019/10/30 全球购物
乌克兰网上珠宝商店:GoldSoveren
2020/03/31 全球购物
新员工入职感言
2014/02/01 职场文书
网站美工岗位职责
2014/04/02 职场文书
法制宣传月活动总结
2014/04/29 职场文书
岗位职责说明书模板
2014/07/30 职场文书
社区助残日活动总结
2014/08/29 职场文书
狮子林导游词
2015/02/03 职场文书