利用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 相关文章推荐
全文搜索和替换
Oct 09 PHP
PHP中的正规表达式(一)
Oct 09 PHP
PHP控制网页过期时间的代码
Sep 28 PHP
php radio 单选框获取与保持值的实现代码
May 15 PHP
linux实现php定时执行cron任务详解
Dec 24 PHP
设置php页面编码的两种方法示例介绍
Mar 03 PHP
ThinkPHP3.1新特性之内容解析输出详解
Jun 19 PHP
PHP生成唯一订单号
Jul 05 PHP
UTF-8正则表达式如何匹配汉字
Aug 03 PHP
session 加入redis的实现代码
Jul 15 PHP
PHP registerXPathNamespace()函数讲解
Feb 03 PHP
Laravel实现搜索的时候分页并携带参数
Oct 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 出现乱码的解决方法
2008/08/08 PHP
php用户注册信息验证正则表达式
2015/11/12 PHP
PHP中危险的file_put_contents函数详解
2017/11/04 PHP
JavaScript 参考教程
2006/12/29 Javascript
一些常用的JS功能函数代码
2009/06/23 Javascript
javascript json 新手入门文档
2009/12/03 Javascript
js控制的遮罩层实例介绍
2013/05/29 Javascript
JS实现同一个网页布局滑动门和TAB选项卡实例
2015/09/23 Javascript
AngularJS中监视Scope变量以及外部调用Scope方法
2016/01/23 Javascript
JS 获取HTML标签内的子节点的方法
2016/09/21 Javascript
canvas实现十二星座星空图
2017/02/14 Javascript
node实现基于token的身份验证
2018/04/09 Javascript
详解JSON和JSONP劫持以及解决方法
2019/03/08 Javascript
浅析js实现网页截图的两种方式
2019/11/01 Javascript
python遍历数组的方法小结
2015/04/30 Python
读取本地json文件,解析json(实例讲解)
2017/12/06 Python
python的dataframe和matrix的互换方法
2018/04/11 Python
在python中实现强制关闭线程的示例
2019/01/22 Python
python基于opencv检测程序运行效率
2019/12/28 Python
Python3实现mysql连接和数据框的形成(实例代码)
2020/01/17 Python
python中sort sorted reverse reversed函数的区别说明
2020/05/11 Python
总结python 三种常见的内存泄漏场景
2020/11/20 Python
CSS3 Media Queries(响应式布局可以让你定制不同的分辨率和设备)
2013/06/06 HTML / CSS
css3给背景图片加颜色遮罩的方法
2019/11/05 HTML / CSS
Abe’s of Maine:自1979以来销售相机和电子产品
2016/11/21 全球购物
全球高级音频和视频专家:HiDef Lifestyle
2019/08/02 全球购物
公司拓展活动方案
2014/02/13 职场文书
领导失职检讨书
2014/02/24 职场文书
创建卫生先进单位实施方案
2014/03/10 职场文书
2014年高考决心书
2014/03/11 职场文书
《得道多助,失道寡助》教学反思
2014/04/19 职场文书
高中学生评语大全
2014/04/25 职场文书
银行竞聘演讲稿
2014/05/16 职场文书
公安四风对照检查材料思想汇报
2014/10/11 职场文书
母亲节主题班会
2015/08/14 职场文书
Apache Hudi的多版本清理服务彻底讲解
2022/03/31 Servers