`
冷寒冰
  • 浏览: 249087 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

详解phpexcel导出excel(支持excel2003,excel2007)

阅读更多

最近公司要改一个php的开源项目,需要实现导出excel的功能,上网查了一下,决定采用phpexcel.网上的例子我修改了一下,又添加了自己的注释,测试过是可以运行的,把代码贴出来,和大家一起分享。

<?php
/*
引入所需的文件(提示:请将下载下来的包里的名为clsasses整个文件夹引入到你的项目中)
*/
require_once 'Classes/PHPExcel.php';
require_once 'Classes/PhpExcel/Writer/Excel2007.php';
require_once 'Classes/PhpExcel/Writer/Excel5.php';
include_once 'Classes/PhpExcel/IOFactory.php'; 
// 创建一个处理对象实例(此对象对于2003 2007是相同的)
$objExcel = new PHPExcel(); 
//设置属性 (这段代码无关紧要,其中的内容可以替换为你需要的)
$objExcel->getProperties()->setCreator("andy");
$objExcel->getProperties()->setLastModifiedBy("andy");
$objExcel->getProperties()->setTitle("Office 2003 XLS Test Document");
$objExcel->getProperties()->setSubject("Office 2003 XLS Test Document");
$objExcel->getProperties()->setDescription("Test document for Office 2003 XLS, generated using PHP classes.");
$objExcel->getProperties()->setKeywords("office 2003 openxml php");
$objExcel->getProperties()->setCategory("Test result file");
//开始处理数据(索引从0开始)
$objExcel->setActiveSheetIndex(0);
$userid=$_POST["user_id"];
$startdate=$_POST["log_start_date"];
$enddate=$_POST["log_end_date"];
$dbuser="root";
$dbpwd="123456";
$dbhost="localhost";
$dbdatabase="project";
$db=mysql_connect($dbhost,$dbuser,$dbpwd);
//mysql_query("set names 'gbk'");//这就是指定数据库字符集,一般放在连接数据库后面就行了(非常重要)
mysql_select_db($dbdatabase,$db);
$mysql="select u.user_username,date(log.task_log_date)as logdate,p.project_name,
   t.work_property_id,t.task_name,sum(log.task_log_hours) as hours
   from task_log as log
   join tasks    as t
   on  log.task_log_task=t.task_id
   join projects as  p
   on p.project_id=t.task_project
   join  user_tasks  as ut
   on t.task_id=ut.task_id
   join users as u
   on u.user_id=ut.user_id
   where ut.user_id=".$userid."
  and date_format(task_log_date,'%Y%m%d') between '".$startdate."' and '".$enddate.
 "' group by t.task_name,ut.user_id,date_format(task_log_date,'%Y%m%d'),p.project_name order by logdate";
$myresult=mysql_query($mysql,$db);
$i=0;
//表头
$k1="日期";
$k2="项目";
$k3="工作性质";
$k4="任务内容";
$k5="用时数(小时)";
/*-----------转码-----------*/
$k1=iconv("gb2312","utf-8",$k1);
$k2=iconv("gb2312","utf-8",$k2);
$k3=iconv("gb2312","utf-8",$k3);
$k4=iconv("gb2312","utf-8",$k4);
$k5=iconv("gb2312","utf-8",$k5);
/*---------------------栏目名称-----------------------*/
$objExcel->getActiveSheet()->setCellValue('a1', "$k1");
$objExcel->getActiveSheet()->setCellValue('b1', "$k2");
$objExcel->getActiveSheet()->setCellValue('c1', "$k3");
$objExcel->getActiveSheet()->setCellValue('d1', "$k4");
$objExcel->getActiveSheet()->setCellValue('e1', "$k5");
while($arr=mysql_fetch_array($myresult))
{
 /*----------从数据库读取数据--------------------*/
 $logdate=$arr["logdate"];
 $projectname=$arr["project_name"];
 //1:需求  2:设计 3:编码  4:代码走查   5测试用例   6系统测试  7维护(these  code  to  avoid generating messy code)
 $message="未填写";
 switch ($arr["work_property_id"])
 {
  case 1:
   $message="需求";
   break;
  case 2:
   $message="设计";
   break;
  case 3:
   $message="编码";
   break;
  case 4:
   $message="代码走查";
   break;
  case 5:
   $message="测试用例";
   break;
  case 6:
   $message="系统测试";
   break;
  case 7:
   $message="维护";
   break;
  default:
   $message;
   break;
  
 }
 $workproperty=$message;
 $taskname=$arr["task_name"];
 $hours=$arr["hours"];
 
 /*-----------转码-----------*/
 $workproperty=iconv("gb2312","utf-8", $workproperty);
 /*
 $logdate=iconv("gb2312","utf-8",$logdate);
 $projectname=iconv("gb2312","utf-8",$projectname);
 $workproperty=iconv("gb2312","utf-8", $workproperty);
 $taskname=iconv("gb2312","utf-8",$taskname);
 $hours=iconv("gb2312","utf-8",$hours);*/
 $u1=$i+2;
 
 /*----------写入内容-------------*/
 $objExcel->getActiveSheet()->setCellValue('a'.$u1, "$logdate");
 $objExcel->getActiveSheet()->setCellValue('b'.$u1, "$projectname");
 $objExcel->getActiveSheet()->setCellValue('c'.$u1, "$workproperty");
 $objExcel->getActiveSheet()->setCellValue('d'.$u1, "$taskname");
 $objExcel->getActiveSheet()->setCellValue('e'.$u1, "$hours");
 $i++;
}
// 高置列的宽度
//echo date('H:i:s') . " Set column widths\n";
$objExcel->getActiveSheet()->getColumnDimension('A')->setWidth(30);
$objExcel->getActiveSheet()->getColumnDimension('B')->setWidth(12);

// 添加条件格式
// 设置字体
//echo date('H:i:s') . " Set fonts\n";
$objExcel->getActiveSheet()->getStyle('A1')->getFont()->setBold(true);
$objExcel->getActiveSheet()->getStyle('B1')->getFont()->setBold(true);
$objExcel->getActiveSheet()->getStyle('A7')->getFont()->setBold(true);
$objExcel->getActiveSheet()->getStyle('B7')->getFont()->setBold(true);

// 设置页眉和页脚。如果没有不同的标题奇数/即使是使用单头假定.
//echo date('H:i:s') . " Set header/footer\n";
$objExcel->getActiveSheet()->getHeaderFooter()->setOddHeader('&L&BPersonal cash register&RPrinted on &D');
$objExcel->getActiveSheet()->getHeaderFooter()->setOddFooter('&L&B' . $objExcel->getProperties()->getTitle() . '&RPage &P of &N');

// 设置页方向和规模
//echo date('H:i:s') . " Set page orientation and size\n";
$objExcel->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT);
$objExcel->getActiveSheet()->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4);

// 重命名表
//echo date('H:i:s') . " Rename sheet\n";
$objExcel->getActiveSheet()->setTitle('Invoice');

// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objExcel->setActiveSheetIndex(0);
//输出内容 (保存到一个默认的路径,用户无法选择路径)
//$objWriter->save(str_replace('.php', '.xls', __FILE__));
//phpexcel 保存时可以选择路径
//保存为excel2007格式
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="01simple.xlsx"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objExcel, 'Excel2007');
$objWriter->save('php://output');
exit;

// Redirect output to a client’s web browser (Excel5)保存为excel2003格式
/*
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="01simple.xls"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objExcel, 'Excel5');
$objWriter->save('php://output');
exit;
*/

?>

1
0
分享到:
评论
1 楼 ldl_xz 2014-07-08  
http://www.9958.pw/post/phpexcel_2003_2007 试试这个

相关推荐

    phpexcel操作excel类

    《PHPExcel操作Excel类详解》 在Web开发中,处理Excel数据是一项常见的任务,而PHPExcel库正是为此目的设计的。它提供了一种强大的方式,允许开发者在PHP环境中读取、写入和编辑Excel文件,无论是旧版的BIFF格式(....

    phpExcel_php操作excel类

    **PHPExcel库详解** 在PHP开发中,处理Excel文件是一项常见的任务,比如数据导入导出、报表生成等。`PHPExcel`是一个强大的第三方库,专为PHP设计,用于读写Excel文件(.xls和.xlsx格式)。它允许开发者通过简单的...

    phpExcel,用于PHP读取和操作Excel文件

    **phpExcel库详解** 在PHP开发中,处理Excel文件是一项常见的任务,无论是数据导入、导出,还是报表生成。phpExcel是一个广泛使用的PHP库,它允许开发者读取、写入和操作Microsoft Excel(.xls)以及后来的...

    PHP导出EXCEL快速开发指南–PHPEXCEL的使用详解

    【PHP导出EXCEL快速开发指南 - PHPEXCEL的使用详解】 PHPEXCEL是一个强大的PHP库,用于创建、读取和修改Microsoft Excel文件。它支持多种文件格式,包括Excel 97-2003 (.xls)、Excel 2007 (.xlsx) 和 PDF。在开发...

    phpexcel 导入导出

    1. **读取Excel文件**: PHPExcel可以读取多种Excel文件格式,包括`.xls`(BIFF8,Excel 97-2003格式)和`.xlsx`(OfficeOpenXML,Excel 2007及更高版本格式)。 2. **写入Excel文件**: 同样,PHPExcel也支持创建新...

    PHP操作excel类(PHPExcel) 1.7.7

    PHPExcel是一款开源的PHP库,它支持多种文件格式,包括.xls(Microsoft Excel 97-2003格式)和.xlsx(Microsoft Office Open XML格式)。通过使用此库,开发者可以轻松地进行行列操作、单元格样式设置、公式计算等...

    PHP导出EXCEL快速开发指南--PHPEXCEL的使用详解

    它支持多种格式,包括Excel 97-2003的.xls和Excel 2007/2010的.xlsx格式,以及PDF格式。它使用对象模型的方式来操作Excel文件的内容和格式,使得开发者可以编程式地控制Excel文件的生成。 ### PHPExcel的基本使用 ...

    PHP生成Excel插件PHPExcel源码

    **PHPExcel源码详解** PHPExcel是一款用于在PHP环境中生成、读取和修改Microsoft Office Excel文件的开源库。它支持多种文件格式,如.xls (BIFF) 和.xlsx (OOXML)。通过使用此库,开发者可以方便地在Web应用程序中...

    PhpExcel class

    PhpExcel支持Excel 97-2003 (.xls) 和 OfficeOpenXML (.xlsx) 文件格式。然而,由于其使用内存映射来处理大型文件,可能导致内存消耗较高。对于处理大量数据时,可以考虑分批读取或使用其他替代库,如`...

    phpExcel1.7.5

    - **读取文件**:PHPExcel 提供了多种 Reader 类,如 `PHPExcel_Reader_Excel2007` 和 `PHPExcel_Reader_Excel5`,可以读取不同格式的 Excel 文件,提取数据并转换为 PHP 对象。 - **写入文件**:对应的 Writer 类...

    php导出导入Excel

    ### PHP与Excel数据交互技术详解 #### 一、引言 在日常开发工作中,经常需要处理Excel文件,比如将数据库中的数据导出为Excel格式,或将Excel中的数据批量导入到数据库中。本文将详细介绍如何使用PHP来实现这些...

    phpexcel.zip下载

    **PHPExcel库详解** 在PHP开发中,处理和操作Excel文件是常见的需求,例如数据分析、报表生成或数据导入导出。`PHPExcel`是一个强大的PHP库,专为读取和写入Excel文件而设计,支持多种文件格式,如.xls、.xlsx、....

    phpexcel库

    - **读取Excel文件**: 支持多种格式,如.xls(BIFF8,Excel97-2003)和.xlsx(OfficeOpenXML,Excel2007及以后版本)。 - **写入Excel文件**: 可创建新的Excel文件或更新现有文件,支持添加工作表、设置样式、公式等...

    PHPExcel用法

    描述:本文将深入探讨PHP导出Excel的具体实现,即PHPExcel的用法详解。PHPExcel是一个功能强大的库,专为生成MS Office Excel文档而设计,尤其适用于需要输出复杂格式数据的情况。 标签与内容概述:标签“php excel...

    phpExcel扩展

    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); $objWriter-&gt;save('output.xlsx'); ``` ### 5. 其他功能 - **数据验证**: 可以设置单元格的数据验证规则,如输入类型、范围限制等。 ...

    详解thinkphp实现excel数据的导入导出(附完整案例)

    4. **导出Excel数据**: 文章提供了导出Excel数据的代码示例。在ThinkPHP中导出数据至Excel文件,首先要创建一个新的PHPExcel对象,然后设置工作表的标题、列名以及要导出的数据。代码中使用了`vendor()`函数加载...

    phpexcel的使用

    **PHPExcel库详解** 在PHP开发中,处理Excel文件是一项常见的任务,比如数据导入导出、报表生成等。PHPExcel库就是为此目的设计的一个强大的工具,它允许开发者使用PHP脚本语言来读取、写入和操作不同版本的...

Global site tag (gtag.js) - Google Analytics