dragondean

在开发某地的经营许可证管理系统的时候需要将数据导出打excel文件,虽然一年前做某集团的ERP的时候用到过一次导入和导出,但是那时候太忙没时间写博客,一年过去了我也忘的差不多了,所以趁着今天将此次的使用写到博客中,作为以后开发的一个参考,免得再次使用的时候需要导出找资料,也给其他同行一个参考。作者:DragonDean,博客地址:http://www.cnblogs.com/dragondean/

什么是PHPExcel?

PHPExcel 是用来操作Office Excel 文档的一个PHP类库,它基于微软的OpenXML标准和PHP语言。可以使用它来读取、写入不同格式的电子表格,如 Excel (BIFF) .xls, Excel 2007 (OfficeOpenXML) .xlsx, CSV, Libre/OpenOffice Calc .ods, Gnumeric, PDF, HTML等等。

下载PHPExcel

phpexcel的官方网站地址是:http://phpexcel.codeplex.com/,我们可以从中下载需要的文件。我下载的是1.8的版本。下载之后将他解压到网站的根目录。

开发背景说明

此次开发是使用的ThinkPHP框架,根据查询的条件导出所有的内容。另外有一个导入的功能,我将另外撰文。更详细的说明请参考代码部分的注释。

导出部分的代码如下:

//导入相关文件
require_once $_SERVER[\'DOCUMENT_ROOT\'].\'/PHPExcel/Classes/PHPExcel.php\';
//实例化
$phpexcel = new PHPExcel();
//设置比标题
$phpexcel->getActiveSheet()->setTitle(\'毅创科技 提示技术支持\');
//设置表头
$phpexcel->getActiveSheet() ->setCellValue(\'A1\',\'餐证字\')
                            ->setCellValue(\'B1\',\'单位名称\')
                            ->setCellValue(\'C1\',\'法定代表人\')
                            ->setCellValue(\'D1\',\'城市\')
                            ->setCellValue(\'E1\',\'地区\')
                            ->setCellValue(\'F1\',\'地址\')
                            ->setCellValue(\'G1\',\'类别\')
                            ->setCellValue(\'H1\',\'备注(经营范围)\')
                            ->setCellValue(\'I1\',\'发证机关\')
                            ->setCellValue(\'J1\',\'起始日期\')
                            ->setCellValue(\'K1\',\'终止日期\')
                            ->setCellValue(\'L1\',\'食品安全管理人\')
                            ->setCellValue(\'M1\',\'是否执证\')
                            ->setCellValue(\'N1\',\'发证日期\')
                            ->setCellValue(\'O1\',\'联系电话\')
                            ->setCellValue(\'P1\',\'使用面积\')
                            ->setCellValue(\'Q1\',\'从业人员数\')
                            ->setCellValue(\'R1\',\'变更情况\')
                            ->setCellValue(\'S1\',\'持证情况\')
                            ->setCellValue(\'T1\',\'所属监管科室\');
//从数据库取得需要导出的数据
$list=$db->where($where)->select();
//用foreach从第二行开始写数据,因为第一行是表头
$i=2;
foreach($list as $val){
    $phpexcel->getActiveSheet() ->setCellValue(\'A\'.$i,\'吉\'.$val[\'czz_nian\'].$val[\'czz_hao\'])
                            ->setCellValue(\'B\'.$i, $val[\'danwei\'])
                            ->setCellValue(\'C\'.$i, $val[\'faren\'])
                            ->setCellValue(\'D\'.$i, $val[\'dz_chengshi\'])
                            ->setCellValue(\'E\'.$i, $val[\'dz_diqu\'])
                            ->setCellValue(\'F\'.$i, $val[\'dizhi\'])
                            ->setCellValue(\'G\'.$i, $val[\'leibie\'])
                            ->setCellValue(\'H\'.$i, $val[\'beizhu\'])
                            ->setCellValue(\'I\'.$i, $val[\'fazheng\'])
                            ->setCellValue(\'J\'.$i, $val[\'qs_nian\'].\'-\'.$val[\'qs_yue\'].\'-\'.$val[\'qs_ri\'])
                            ->setCellValue(\'K\'.$i, $val[\'zz_nian\'].\'-\'.$val[\'zz_yue\'].\'-\'.$val[\'zz_ri\'])
                            ->setCellValue(\'L\'.$i, $val[\'anquan\'])
                            ->setCellValue(\'M\'.$i, $val[\'zhizheng\'])
                            ->setCellValue(\'N\'.$i, $val[\'fz_nian\'].\'-\'.$val[\'fz_yue\'].\'-\'.$val[\'fz_ri\'])
                            ->setCellValue(\'O\'.$i, $val[\'dianhua\'])
                            ->setCellValue(\'P\'.$i, $val[\'shiyongmianji\'])
                            ->setCellValue(\'Q\'.$i, $val[\'renshu\'])
                            ->setCellValue(\'R\'.$i, $val[\'biangeng\'])
                            ->setCellValue(\'S\'.$i, $val[\'chizheng\'])
                            ->setCellValue(\'T\'.$i, $val[\'keshi\']);
    $i++;
}

$obj_Writer = PHPExcel_IOFactory::createWriter($phpexcel,\'Excel5\');
$filename =\'Export\'. date(\'Y-m-d\').".xls";//文件名

//设置header
header("Content-Type: application/force-download"); 
header("Content-Type: application/octet-stream"); 
header("Content-Type: application/download"); 
header(\'Content-Disposition:inline;filename="\'.$filename.\'"\'); 
header("Content-Transfer-Encoding: binary"); 
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Pragma: no-cache"); 
$obj_Writer->save(\'php://output\');//输出
die();//种植执行

导出的文件预览:

其他的相关属性设置参考(来源于网络资料)

//设置文档基本属性       
$objProps = $phpexcel->getProperties();       
$objProps->setCreator("章贡区医疗保险局");       
$objProps->setLastModifiedBy("章贡区医疗保险局");       
$objProps->setTitle("章贡区医疗保险局职工月增减变动报表");       
$objProps->setSubject("章贡区医疗保险局职工月增减变动报表");       
$objProps->setDescription("章贡区医疗保险局职工月增减变动报表");       
$objProps->setKeywords("章贡区医疗保险局职工月增减变动报表");       
$objProps->setCategory("变动报表"); 

PHPExcel如何合并/分离单元格

$objPHPExcel->getActiveSheet()->mergeCells(\'A18:E22\'); 
$objPHPExcel->getActiveSheet()->unmergeCells(\'A18:E22\'); 

PHPExcel如何设置列宽/行高

$objPHPExcel->getActiveSheet()->getColumnDimension(\'B\')->setAutoSize(true); 
$objPHPExcel->getActiveSheet()->getColumnDimension(\'D\')->setWidth(12); 
$objPHPExcel->getActiveSheet()->getRowDimension(3)->setRowHeight(16); 

PHPExcel如何设置样式

$objStyleA1 = $phpexcel->getActiveSheet()->getStyle(\'A1\');       
$objStyleA1->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);   //设置水平对其
$objStyleA1->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);    //设置垂直对其
$objFontA1 = $objStyleA1->getFont(); 
$objFontA1->setName(\'宋体\'); $objFontA1->setSize(18); $objFontA1->setBold(true);

 

PHPExcel如何设置边框

$objActSheet->getStyle(\'A2\')->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );   
$objActSheet->getStyle(\'A2\')->getBorders()->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );   
$objActSheet->getStyle(\'A2\')->getBorders()->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );   
$objActSheet->getStyle(\'A2\')->getBorders()->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN );  
$objPHPExcel->getActiveSheet()->getStyle(\'D13\')->getBorders()->getLeft()->getColor()->setARGB(\'FF993300\');//设置边框颜色

更多资料请百度一下,如有问题欢迎指正!

 

分类:

技术点:

相关文章:

  • 2021-11-09
  • 2021-12-05
  • 2021-05-03
  • 2021-10-20
  • 2021-12-05
  • 2021-12-15
  • 2021-10-16
  • 2021-12-29
猜你喜欢
  • 2021-12-05
  • 2021-12-15
  • 2021-08-25
  • 2021-12-05
  • 2020-02-09
  • 2021-12-07
相关资源
相似解决方案