对于一些企业网站来说,经常需要把网站上的数据导出到EXCEL来进行分析,这里就需要用到PHPEXCEL,可以方便导出网站MYSQL数据库内容到EXCEL总
phpexcel是外国人写专门处理从数据库到excel的功能库,下载地址:https://github.com/PHPOffice/PHPExcel
里面有很多的例子,包括excel,csv,word,pdf,htm等从数据库导出来的文件格式,可以参考一下例子。
笨牛网先把从织梦系统导出来的效果上个图给大家看看:
使用中遇到一个问题,就是以前的时间,在excel是正常显示的,但是,现在加上的时间则显示:1970-01-01 ,研究了很久,原来字段写错了。本来是pubdate,结果写成了sentdate
其它都是正常显示的
现在就介绍一下从织梦系统导出数据的方法:
1.从国外网站下载上面的phpexcel类库,解压后,放到根目录里面。
2.然后,写导出程序,这个可以参考这里面的例子写,请注意的是:若你的不行,程序可能会提示404错误,这个就是你的路径没有设置好,刚开始时,我也是这个原因一直弄不对,最后,才发现原来是路径错了。
这个导出程序主要做如下四步:
a. 从织梦中查询出数据
b.设置表格
c.把数据放入表格
d.输出数据到excel里面
里面的设置大多数都是调用phpexcel类里面的函数,这里不多解释了,看我在文件dedebnxb.php写的代码:
01 |
require_once (DEDEINC . '/common.func.php' ); |
03 |
if ($action == 'allexport' ) { |
05 |
include_once DEDEINC . '/PHPExcel.php' ; |
06 |
// Create new PHPExcel object |
07 |
$objPHPExcel = new PHPExcel(); |
09 |
$objActSheet = $objPHPExcel->getActiveSheet(); |
11 |
// Set document properties |
12 |
$objPHPExcel->getProperties()->setCreator( "Maarten Balliauw" )->setLastModifiedBy( "Maarten Balliauw" ) |
13 |
->setTitle( "Office 2007 XLSX Test Document" )->setSubject( "Office 2007 XLSX Test Document" ) |
14 |
->setDescription( "Test document for Office 2007 XLSX, generated using PHP classes." )->setKeywords( "office 2007 openxml php" ) |
15 |
->setCategory( "Test result file" ); |
17 |
$objPHPExcel->setActiveSheetIndex(0) |
18 |
->setCellValue( 'A1' , 'id' ) |
19 |
->setCellValue( 'B1' , '标题' ) |
20 |
->setCellValue( 'C1' , '排序' ) |
21 |
->setCellValue( 'D1' , '出版时间' ) |
22 |
->setCellValue( 'E1' , '关键词' ) |
23 |
->setCellValue( 'F1' , '简介' ) |
24 |
->setCellValue( 'G1' , '发布时间' ) |
25 |
->setCellValue( 'H1' , '会员id' ) |
26 |
->setCellValue( 'I1' , 'flag' ) |
27 |
->setCellValue( 'J1' , '栏目id' ); |
28 |
$query = "Select * From `dede_archives` " ; |
29 |
$dsql->SetQuery($query); |
34 |
while ($row = $dsql->GetArray()) { |
37 |
$objPHPExcel->setActiveSheetIndex(0) |
39 |
$index, $row[ 'id' ])->setCellValue( 'B' . |
40 |
$index, iconv( "gb2312" , "utf-8" ,$row[ 'title' ]))->setCellValue( 'C' . |
41 |
$index, $row[ 'sortrank' ])->setCellValue( 'D' . |
42 |
$index, "2015-7-23" )->setCellValueExplicit( 'E' . |
43 |
$index, iconv( "gb2312" , "utf-8" ,$row[ 'keywords' ]))->setCellValue( 'F' . |
44 |
$index, iconv( "gb2312" , "utf-8" ,$row[ 'description' ]))->setCellValue( 'G' . |
45 |
$index, gmdate( "Y-m-d" ,$row[ 'pubdate' ]))->setCellValue( 'H' . |
46 |
$index, $row[ 'mid' ])->setCellValue( 'I' . |
47 |
$index, $row[ 'flag' ])->setCellValue( 'J' . |
48 |
$index, $row[ 'typeid' ]); |
51 |
// Rename worksheetwww.bnxb.com |
52 |
$objPHPExcel->getActiveSheet()->setTitle( 'Simple' ); |
54 |
// Set active sheet index to the first sheet, so Excel opens this as the first sheet |
55 |
$objPHPExcel->setActiveSheetIndex(0); |
57 |
// Redirect output to a client’s web browser (Excel5) |
58 |
header( 'Content-Type: application/vnd.ms-excel' ); |
60 |
header( 'Content-Disposition: attachment;filename="list.xls"' ); |
61 |
header( 'Cache-Control: max-age=0' ); |
63 |
$objWriter = PHPExcel_IOFactory :: createWriter($objPHPExcel, 'Excel5' ); |
64 |
$objWriter->save( 'php://output' ); |
|
特别特别注意:在这个最上面一行要写上你的从网站上下载下来的phpexcel类的路径,也就是把这个类引入到这个文件里面,只有引入到里面才能调用。
最后,在你的模板里面把下面这二行中的任意一行写在模板里即可:
<input name="ss12" value="导出全部订单" style="width:90px;margin-right:6px" onclick="location='crtadmin/download_oneapply.php?action=allexport';" class="np coolbg" type="button">
<a href='crtadmin/download_excel.php?action=allexport'>execl</a>
我这里放二行是因为,有的站长可能只需要一个超链接,有的可能需要一个input,二个任选一个即可。