2014-3-27 4646 0
2014-2-19 2121 0
源码

方法一:特点,简单,省心,只适用windows服务器以下为引用的内容:<?phpheader("Content-type:application/vnd.ms-excel");header("Content-Disposition:attachment;filename=test_data.xls");$tx='表头';echo$tx."\n\n";//输出内容如下:echo"姓名"."\t";echo"年龄"."\t";echo"学历"."\t";echo"\n";echo"张三"."\t";echo"25"."\t";echo"本科"."\t";?>方法二:引用googlecode中推荐的小类库(大体同方法一,比较复杂点)下载地址:http://code.google.com/p/php-excel/downloads/list方法三:PHPEXCEL类库,功能强大,操作excel很方便,尤其是可以方便的加入图片,支持jpggifpng格式,支持winExcel2003,WinExcel2007.下载地址:http://www.codeplex.com/PHPExcel下面是总结的几个使用方法001<?002/**003*以下是使用示例,对于以////开头的行是不同的可选方式,请根据实际需要004*打开对应行的注释。005*如果使用Excel5,输出的内容应该是GBK编码。006*/007008include'PHPExcel.php';009010include'PHPExcel/Writer/Excel2007.php';011012//或者include'PHPExcel/Writer/Excel5.php';用于输出.xls的013014//uncomment015////require_once'PHPExcel/Writer/Excel5.php';//用于其他低版本xls016//or017////require_once'PHPExcel/Writer/Excel2007.php';//用于excel-2007格式018019//创建一个处理对象实例020$objExcel=newPHPExcel();021022//创建文件格式写入对象实例,uncomment023////$objWriter=newPHPExcel_Writer_Excel5($objExcel);//用于其他版本格式024//or025////$objWriter=newPHPExcel_Writer_Excel2007($objExcel);//用于2007格式026//$objWriter->setOffice2003Compatibility(true);027028//*************************************029//设置文档基本属性030$objProps=$objExcel->getProperties();031$objProps->setCreator("ZealLi");032$objProps->setLastModifiedBy("ZealLi");033$objProps->setTitle("OfficeXLSTestDocument");034$objProps->setSubject("OfficeXLSTestDocument,Demo");035$objProps->setDescription("Testdocument,generatedbyPHPExcel.");036$objProps->setKeywords("officeexcelPHPExcel");037$objProps->setCategory("Test");038039//*************************************040//设置当前的sheet索引,用于后续的内容操作。041//一般只有在使用多个sheet的时候才需要显示调用。042//缺省情况下,PHPExcel会自动创建第一个sheet被设置SheetIndex=0043$objExcel->setActiveSheetIndex(0);044045046$objActSheet=$objExcel->getActiveSheet();047048//设置当前活动sheet的名称049$objActSheet->setTitle('测试Sheet');050051//*************************************052//设置单元格内容053//054//由PHPExcel根据传入内容自动判断单元格内容类型055$objActSheet->setCellValue('A1','字符串内容');//字符串内容056$objActSheet->setCellValue('A2',26);//数值057$objActSheet->setCellValue('A3',true);//布尔值058$objActSheet->setCellValue('A4','=SUM(A2:A2)');//公式059060//显式指定内容类型061$objActSheet->setCellValueExplicit('A5','847475847857487584',062PHPExcel_Cell_DataType::TYPE_STRING);063064//合并单元格065$objActSheet->mergeCells('B1:C22');066067//分离单元格068$objActSheet->unmergeCells('B1:C22');069070//*************************************071//设置单元格样式072//073074//设置宽度075$objActSheet->getColumnDimension('B')->setAutoSize(true);076$objActSheet->getColumnDimension('A')->setWidth(30);077078$objStyleA5=$objActSheet->getStyle('A5');079080//设置单元格内容的数字格式。081//082//如果使用了PHPExcel_Writer_Excel5来生成内容的话,083//这里需要注意,在PHPExcel_Style_NumberFormat类的const变量定义的084//各种自定义格式化方式中,其它类型都可以正常使用,但当setFormatCode085//为FORMAT_NUMBER的时候,实际出来的效果被没有把格式设置为"0"。需要086//修改PHPExcel_Writer_Excel5_Format类源代码中的getXf($style)方法,087//在if($this->_BIFF_version==0x0500){(第363行附近)前面增加一088//行代码:089//if($ifmt==='0')$ifmt=1;090//091//设置格式为PHPExcel_Style_NumberFormat::FORMAT_NUMBER,避免某些大数字092//被使用科学记数方式显示,配合下面的setAutoSize方法可以让每一行的内容093//都按原始内容全部显示出来。094$objStyleA5095->getNumberFormat()096->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER);097098//设置字体099$objFontA5=$objStyleA5->getFont();100$objFontA5->setName('CourierNew');101$objFontA5->setSize(10);102$objFontA5->setBold(true);103$objFontA5->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE);104$objFontA5->getColor()->setARGB('FF999999');105106//设置对齐方式107$objAlignA5=$objStyleA5->getAlignment();108$objAlignA5->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);109$objAlignA5->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);110111//设置边框112$objBorderA5=$objStyleA5->getBorders();113$objBorderA5->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);114$objBorderA5->getTop()->getColor()->setARGB('FFFF0000');//color115$objBorderA5->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);116$objBorderA5->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);117$objBorderA5->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);118119//设置填充颜色120$objFillA5=$objStyleA5->getFill();121$objFillA5->setFillType(PHPExcel_Style_Fill::FILL_SOLID);122$objFillA5->getStartColor()->setARGB('FFEEEEEE');123124//从指定的单元格复制样式信息.125$objActSheet->duplicateStyle($objStyleA5,'B1:C22');126127128//*************************************129//添加图片130$objDrawing=newPHPExcel_Worksheet_Drawing();131$objDrawing->setName('ZealImg');132$objDrawing->setDescription('ImageinsertedbyZeal');133$objDrawing->setPath('./zeali.net.logo.gif');134$objDrawing->setHeight(36);135$objDrawing->setCoordinates('C23');136$objDrawing->setOffsetX(10);137$objDrawing->setRotation(15);138$objDrawing->getShadow()->setVisible(true);139$objDrawing->getShadow()->setDirection(36);140$objDrawing->setWorksheet($objActSheet);141142143//添加一个新的worksheet144$objExcel->createSheet();145$objExcel->getSheet(1)->setTitle('测试2');146147//保护单元格148$objExcel->getSheet(1)->getProtection()->setSheet(true);149$objExcel->getSheet(1)->protectCells('A1:C22','PHPExcel');150151152//*************************************153//输出内容154//155$outputFileName="output.xls";156//到文件157//$objWriter->save($outputFileName);158159//到浏览器160header("Content-Type:application/force-download");161header("Content-Type:application/octet-stream");162header("Content-Type:application/download");163header('Content-Disposition:inline;filename="'.$outputFileName.'"');164header("Content-Transfer-Encoding:binary");165header("Expires:Mon,26Jul199705:00:00GMT");166header("Last-Modified:".gmdate("D,dMYH:i:s")."GMT");167header("Cache-Control:must-revalidate,post-check=0,pre-check=0");168header("Pragma:no-cache");169$objWriter->save('php://output');170171?>

2013-12-19 2524 0
2013-8-20 2483 0
源码

dedecms里面有两个标签还是比较灵活的,一个是{dede:php}{/dede:php}另外一个是{dede:sql}标签,{dede:php}标签注释要用来在模板中写php代码的,{dede:sql}主要是用来调用sql用的,下面就来介绍下这两个标签到底该如何使用。该文章是转自百度空间的一篇文章。{dede:sql}标签的用法sql标签可以称得上是个万能标签了,查询数据库将其输出,这里介绍一些关于这个标签的用法:1.用来输出统计内容,这个是不错的,举个例子,我们来统计下总共发了多少的文章,思路就是输出dede_addonarticle这个文章附加表内容总数就可以了。{dede:sqlsql="SELECTCOUNT(*)ASnumsFROMdede_addonarticle"}[field:name="nums"/]{/dede:sql}2.使用~field~来进行特殊的查询,比如之前论坛上面很多会员需要做一个输出当前发布文章会员的相关内容,之前用sql或者arclist标签是没办法实现的,因为每篇内容是不同的,这里我们来用5.5的sql语句来做个示范。我们首先在文章模板中相应的位置加上下面的标签{dede:sqlsql="SELECT*FROMdede_archivesWHEREwriter=~writer~"}[field:id/],{/dede:sql}这个放到article_article.htm页面,将会检索出当前会员发布的相关文章,这里的~writer~会根据当前内容的环境变量进行替换后再执行查询。这里出现在SQL语句中条件查询的~writer~,也就是$refObj->Fields[$value]这个里面的相关内容模板中使用PHP许多人希望织梦的模板标签能够更加灵活,加入可以运行PHP的功能,这里在DedeCMSV5.5中就加入了一个可以执行php的特殊标签{dede:php}{/dede:php},这个标签可以执行PHP语句了。我这里举几个常用的例子:1.最简单的输出内容:{dede:php}$numA=1;$numB=2;echo$numA+$numB;{/dede:php}在{dede:php}里想要输出信息可以直接使用print,echo之类的打印出来赋值给@me无效这个输出的内容是计算结果:32.结合SQL查询输出单条内容{dede:php}$row=$dsql->GetOne('selectid,typenamefromdede_arctypewhereid=2');print_r($row);{/dede:php}这个输出的内容是Array([id]=>2[typename]=>问答)3.获取当前页面的变量比如我们这里进入系统后台的[模板]-[全局标记测试],我们在代码中填入下面的内容:{dede:php}print_r($refObj->Fields);{/dede:php}在PHP中想要获取dede某个字段值可以使用$refObj->Fields对象来获取列入获取title=>$refObj->Fields['title']如果环境变量保持默认,即"不使用环境ID",我们会看到以下的结果:Array([typeid]=>0[phpurl]=>/plus[indexurl]=>/[templeturl]=>/templets[memberurl]=>/member[specurl]=>/special[indexname]=>主页[templetdef]=>/templets/default)那我们再换个环境变量测试看看,这里以我本地的栏目为测试了:Array([id]=>3[reid]=>0[topid]=>0[sortrank]=>1[typename]=>产品[typedir]=>{cmspath}/product……[indexname]=>主页[templetdef]=>/templets/default[position]=>主页>产品>[title]=>产品)这样一来就检索出当前页面的局部变量了,接下来我们可以来结合前面的SQL语句来实现根据不同环境ID调用内容不同栏目内容。例如:{dede:php}$thisid=$refObj->Fields['id'];$row=$dsql->GetOne('selectid,typenamefromdede_arctypewhereid='.$thisid);print_r($row);{/dede:php}这样是来调用当前栏目的标题,这个标签功能类似于{dede:field.typename/}文章写得很不错,写在这里一是方便自己查看,而是分享给和我有同样困惑的人。希望能帮助同学们。转:http://blog.csdn.net/huminghai/article/details/7680088