PHP导出Excel表格
- 格式:docx
- 大小:15.83 KB
- 文档页数:3
本文由我司收集整编,推荐下载,如有疑问,请与我司联系为何我用PHP 生成的Excel 文件不提示下载保存到本地机而是直接在Web 页面上打开?2003/01/10 10 header(“Content-type:application/vnd.ms-excel”);header(“Content- Disposition:filename=test.xls”);echo”test1\t”;echo”test2\t\n”;echo”test1\t”; echo”test2\t\n”;echo”test1\t”;echo”test2\t\n”;echo”test1\t”;echo”test2\t\n”; echo”test1\t”;echo”test2\t\n”;echo”test1\t”;echo”test2\t\n”; ? 请问用php 能对导出的Excel 文件略加修饰吗?比如增加页眉,字体设计等. ?php $workbook=“C:ProgramFilesMicrosoftofficeOfficeSamplesSOLVSAMP.XLS”;$sheet=“QuickTour”;$ex=newCOM(“Excel.sheet”)orDie(“Didnotconnect”);print”程序名称:{$ex- Application- value} BR “;print”版本:{$ex- Application- version} BR $wkb=$ex- application- Workbooks- Open($workbook)orDie(“Didnotopen”);$ex- Application- ActiveWorkbook- SaveAs(“Ourtest”); #$ex- Application- Visible=1;#去掉注释可以让Excel 可见#读取一个单元格的内容(E11)$sheets=$wkb- Worksheets($sheet);#选择工作表$sheets- activate;#激活$cell=$sheets- Cells(11,5);#选择单元格(行列号)$cell- activate;#激活print”OldValue={$cell- value} BR #打印内容:10000 $cell- value=15000;#改为15000 print”Newvalue={$cell- value} BR “;#打印新内容:15000 #最后,重新计算工作表$sheets- Calculate;#当计算选项是手工时需要#看看结果totalcost(单元格E13) $cell=$sheets- Cells(13,5);#选择单元格$number=Number_format($cell- value); print”NewTotalcost=$$number- was$47,732before. BR #将会打印$57,809 #使用Excel 的内置函数:#Function:PMT(percent/12months,Numberofpayments,Loanamount) $pay=$ex- application- pmt(0.08/12,10,10000); $pay=sprintf(“%.2f”,$pay); print”Monthlypaymentfor$10,000loan@8%interest/10months:$$pay BR #将会打印monthlypayment=$-1,037.03 #保存改过的工作簿$ex- Application- ActiveWorkbook- SaveAs(“Ourtest”);#关闭所有工作簿$ex- application-。
PHP导出Excel的类库—PHPExcel,支持附带图片PHP导出Excel的类库—PHPExcel,支持附带图片PHP导出Excel比较简单的办法有:一、直接通过PHP的header来导出Excel。
view sourceprint?01.header("Content-type:application/vnd.ms-excel");02.header("Content-Disposition:attachment;filename=excel_data.xls");03.04.$tx='HEADER';05.echo $tx."\n\n";06.//输出内容如下:07.echo "Name"."\t";08.echo "Age"."\t";09.echo "\n";10.echo "lilei"."\t";11.echo "25"."\t";二、采用Excel_XML类。
Excel_XML是一个简单的PHP导出XML格式Excel的类。
下载地址:/p/php-excel/downloads/list使用方法:view sourceprint?01.// load library02.require 'php-excel.class.php';03.04.// create a simple 2-dimensional array05.$data = array(06.1 => array ('Name', 'Surname'),07.array('Schwarz', 'Oliver'),08.array('Test', 'Peter')09.);10.11.// generate file (constructor parameters are optional)12.$xls = new Excel_XML('UTF-8', false, 'My Test Sheet');13.$xls->addArray($data);14.$xls->generateXML('my-test');以上两种是比较简单的导出Excel的方法,但功能不够强大,只能满足一般的需求。
php导出大量数据的方法在Web开发中,经常会遇到导出大量数据的需求,例如从数据库中导出表格数据、生成Excel报表等。
本文将介绍几种使用PHP导出大量数据的方法,帮助您在实际项目中快速处理这类需求。
一、将数据导出为CSV文件CSV(逗号分隔值)是一种常用的数据交换格式,它的优点是简单、易读,适用于大多数数据导出场景。
以下是使用PHP将数据导出为CSV文件的示例代码:```php<?php// 设置HTTP头,告诉浏览器下载文件header('Content-Type: text/csv');header('Content-Disposition: attachment; filename="data.csv"');// 打开输出流$fp = fopen('php://output', 'w');// 查询数据库获取数据$data = []; // 假设这里是数据库查询的结果// 写入CSV文件头部fputcsv($fp, array_keys($data[0]));// 逐行写入数据foreach ($data as $row) {fputcsv($fp, $row);}// 关闭输出流fclose($fp);>```上述代码首先设置了HTTP头,告诉浏览器将要下载一个CSV文件。
然后,使用`fopen()`打开输出流,指定使用`php://output`作为文件路径,这样就可以直接将数据输出到浏览器。
接着,通过`fputcsv()`函数将表头和数据按CSV格式写入文件。
最后,使用`fclose()`关闭输出流。
二、将数据导出为Excel文件除了导出CSV文件,我们还可以使用PHP将数据导出为Excel文件(xls或xlsx格式)。
这需要借助第三方库,如PHPExcel或PhpSpreadsheet。
基于php导出到Excel或CSV的详解(附utf8、gbk编码转换)php导⼊到excel乱码是因为utf8编码在xp系统不⽀持所有utf8编码转码⼀下就完美解决了Php代码复制代码代码如下:<?phpheader("Content-Type: application/vnd.ms-excel; charset=UTF-8");header("Pragma: public");header("Expires: 0");header("Cache-Control: must-revalidate, post-check=0, pre-check=0");header("Content-Type: application/force-download");header("Content-Type: application/octet-stream");header("Content-Type: application/download");header("Content-Disposition: attachment;filename=11.xls ");header("Content-Transfer-Encoding: binary ");>Php代码复制代码代码如下:<?$filename="php导⼊到excel-utf-8编码";$filename=iconv("utf-8", "gb2312", $filename);echo $filename;>Php代码复制代码代码如下:<?phpheader("Content-Type: application/vnd.ms-excel; charset=UTF-8");header("Pragma: public");header("Expires: 0");header("Cache-Control: must-revalidate, post-check=0, pre-check=0");header("Content-Type: application/force-download");header("Content-Type: application/octet-stream");header("Content-Type: application/download");header("Content-Disposition: attachment;filename=11.xls ");header("Content-Transfer-Encoding: binary ");>Php代码复制代码代码如下:0.<?0.$filename="php导⼊到excel-utf-8编码";0.echo $filename;0.?>访问⽹站的时候就下载到excel⾥⾯要弄单元格区别的话⽤table表格做⽹页的就可以了====================== 其他⽅法 =============================复制代码代码如下:0.<?php0.header("Content-type:application/vnd.ms-excel");0.header("Content-Disposition:filename=php2excel.xls");0.echo "A1/t B1/t C1/n";0.echo "A2/t B2/t C2/n";0.echo "A3/t B3/t C3/n";0.echo "A4/t B4/t C4/n";0.?>复制代码代码如下:<?php$action =$_GET['action'];if ($action=='make'){$fp = fopen("demo_csv.csv","a"); //打开csv⽂件,如果不存在则创建$title = array("First_Name","Last_Name","Contact_Email","Telephone"); //第⼀⾏数据$data_1 = array("42343","423432","4234","4234");$data_2 = array("4234","Last_Name","Contact_Email","Telephone");$title = implode(",",$title); //⽤ ' 分割成字符串$data_1 = implode(",",$data_1); // ⽤ ' 分割成字符串$data_2 = implode(",",$data_2); // ⽤ ' 分割成字符串$data_str =$title."/r/n".$data_1."/r/n".$data_2."/r/n"; //加⼊换⾏符fwrite($fp,$data_str); // 写⼊数据fclose($fp); //关闭⽂件句柄echo "⽣成成功";}echo "<br>";echo "<a href='?action=make'>⽣成csv⽂件</a>";>也可以做⼀个封闭函数:复制代码代码如下:function exportToCsv($csv_data, $filename = 'export.csv') {$csv_terminated = "/n";$csv_separator = ",";$csv_enclosed = '"';$csv_escaped = "//";// Gets the data from the database$schema_insert = '';$out = '';// Format the dataforeach ($csv_data as $row){$schema_insert = '';$fields_cnt = count($row);//printr($row);$tmp_str = '';foreach($row as $v){$tmp_str .= $csv_enclosed.str_replace($csv_enclosed, $csv_escaped . $csv_enclosed, $v).$csv_enclosed.$csv_separator;} // end for$tmp_str = substr($tmp_str, 0, -1);$schema_insert .= $tmp_str;$out .= $schema_insert;$out .= $csv_terminated;} // end whileheader("Cache-Control: must-revalidate, post-check=0, pre-check=0");header("Content-Length: " . strlen($out));header("Content-type: text/x-csv");header("Content-Disposition:filename=$filename");echo $out;/*$csv_data = array(array('Name', 'Address'));array_push($csv_data, array($row['name'],$row['address']));...exportToCsv($csv_data,'new_file.csv');*/复制代码代码如下:<?/*** Simple class to properly output CSV data to clients. PHP 5 has a built* in method to do the same for writing to files (fputcsv()), but many times* going right to the client is beneficial.** @author Jon Gales*/class CSV_Writer {public $data = array();public $deliminator;/*** Loads data and optionally a deliminator. Data is assumed to be an array* of associative arrays.** @param array $data* @param string $deliminator*/function __construct($data, $deliminator = ","){if (!is_array($data)){throw new Exception('CSV_Writer only accepts data as arrays');}$this->data = $data;$this->deliminator = $deliminator;}private function wrap_with_quotes($data){$data = preg_replace('/"(.+)"/', '""$1""', $data);return sprintf('"%s"', $data);}/*** Echos the escaped CSV file with chosen delimeter** @return void*/public function output(){foreach ($this->data as $row){$quoted_data = array_map(array('CSV_Writer', 'wrap_with_quotes'), $row); echo sprintf("%s/n", implode($this->deliminator, $quoted_data));}}/*** Sets proper Content-Type header and attachment for the CSV outpu** @param string $name* @return void*/public function headers($name)header('Content-Type: application/csv');header("Content-disposition: attachment; filename={$name}.csv");}}/*//$data = array(array("one","two","three"), array(4,5,6));$data[] = array("one","two","three");$data[] = array(4,5,6);$csv = new CSV_Writer($data);$csv->headers('test');$csv->output();*/复制代码代码如下:<?phprequire_once 'Spreadsheet/Writer.php';$workbook = new Spreadsheet_Excel_Writer();/* ⽣成 CSV$filename = date('YmdHis').'.csv';$workbook->send($filename); // 发送 Excel ⽂件名供下载*/// ⽣成 Excel$filename = date('YmdHis').'.xls';$workbook->send($filename); // 发送 Excel ⽂件名供下载$workbook->setVersion(8);$workbook->setBIFF8InputEncoding('UTF-8');$worksheet =& $workbook->addWorksheet("Sheet-1");$data[]= array('id','username','company','email','mob','daytime','intent');$data[] = array(1,'⽼梁','**⼯作室','','1363137966*',time(),'y');$total_row = count($data);$total_col = count($data[0]);for ($row = 0; $row < $total_row; $row ++) {for ($col = 0; $col < $total_col; $col ++) {$worksheet->writeString($row, $col, $data[$row][$col]); // 在 sheet-1 中写⼊数据 }}/*$worksheet =& $workbook->addWorksheet("Sheet-2");$data[]= array('id','username','company','email','mob','daytime','intent');$data[] = array(1,'⽼梁','**⼯作室','','1363137966*',time(),'y');$total_row = count($data);$total_col = count($data[0]);for ($row = 0; $row < $total_row; $row ++) {for ($col = 0; $col < $total_col; $col ++) {$worksheet->writeString($row, $col, $data[$row][$col]); // 在 sheet-2 中写⼊数据 }}*/$workbook->close(); // 完成下载>读取Excel⽂件function Read_Excel_File($ExcelFile,$Result)$ExcelFile Excel⽂件名$Result 返回的结果函数返回值正常返回0,否则返回错误信息返回的值数组$result[sheet名][⾏][列] 的值为相应Excel Cell的值function Create_Excel_File($ExcelFile,$Data) $ExcelFile Excel⽂件名$Data Excel表格数据请把函数写在PHP脚本的开头例1:复制代码代码如下:<?require "excel_class.php";Read_Excel_File("Book1.xls",$return);for ($i=0;$i<count($return[Sheet1]);$i++){for ($j=0;$j<count($return[Sheet1][$i]);$j++) {echo $return[Sheet1][$i][$j]."|";}echo "<br>";}>例2:复制代码代码如下:<?require "excel_class.php";Read_Excel_File("Book1.xls",$return); Create_Excel_File("ddd.xls",$return[Sheet1]); >。
PHP如何导入导出Excel1:利用smarty,生成符合Excel规范的XML或HTML文件支持格式,非常完美的导出方案。
不过导出来的的本质上还是XML文件,如果用来导入就需要另外处理了。
需要注意的是如果导出的表格行数不确定时,最好在模板中把”ss:ExpandedColumnCount=”5″ ss:ExpandedRowCount=”21″”之类的东西删掉。
2、利用pack函数打印出模拟Excel格式的断句符号,这种更接近于Excel标准格式,用office2003修改后保存,还不会弹出提示,推荐用这种方法。
缺点是无格式。
PHP代码<?php// Send Header header(”Pragma: public”); header(”Expires: 0″);header(”Cache-Control: must-revalidate, post-check=0, pre-check=0″);header(”Content-Type: application/force-download”);header(”Content-Type: application/octet-stream”);header(”Content-Type: application/download”);;header(”Content-Disposition:attachment;filename=test.xls “);header(”Content-Transfer-Encoding: binary “);// XLS Data Cell xlsBOF();xlsWriteLabel(1,0,”My excel line one”);xlsWriteLabel(2,0,”My excel line two : “);xlsWriteLabel(2,1,”Hello everybody”);xlsEOF(); function xlsBOF() { echo pack(”ssssss”, 0×809, 0×8, 0×0, 0×10, 0×0, 0×0); return; }function xlsEOF() { echo pack(”ss”, 0×0A, 0×00); return; }function xlsWriteNumber($Row, $Col, $Value) { echo pack(”sssss”, 0×203, 14, $Row, $Col, 0×0); echo pack(”d”, $Value); return; }function xlsWriteLabel($Row, $Col, $Value ) { $L = strlen($Value); echo pack(”ssssss”, 0×204, 8 + $L, $Row, $Col, 0×0, $L); echo $Value; return; } ?>不过在64位linux系统中使用时失败了,断句符号全部变成了乱码。
php利用PHPExcel类导出导入Excel用法PHPExcel类是php一个excel表格处理插件了,下面我来给大家介绍利用PHPExcel类来导入与导出excel表格的应用方法,有需要了解的朋友不防参考参考(PHPExcel自己百度下载这里不介绍了)。
导出Excel用法//设置环境变量(新增PHPExcel)代码如下复制代码set_include_path('.'. PATH_SEPARATOR . Yii::app()->basePath.'/lib/PHPExcel' .PATH_SEPARATOR .get_include_path());//注:在yii中,也可以直接Yii::import(“application.lib.PHPExcel.*”);//引入PHPExcel相关文件require_once "PHPExcel.php";require_once 'PHPExcel/IOFactory.php';require_once 'PHPExcel/Writer/Excel5.php';//把要导出的内容放到表格代码如下复制代码//新建$resultPHPExcel = new PHPExcel();//设置参数//设值$resultPHPExcel->getActiveSheet()->setCellValue('A1', '季度');$resultPHPExcel->getActiveSheet()->setCellValue('B1', '名称');$resultPHPExcel->getActiveSheet()->setCellValue('C1', '数量');$i = 2;foreach($data as $item){$resultPHPExcel->getActiveSheet()->setCellValue('A' . $i, $item['quarter']); $resultPHPExcel->getActiveSheet()->setCellValue('B' . $i, $item['name']); $resultPHPExcel->getActiveSheet()->setCellValue('C' . $i, $item['number']);$i ++;}设置导出参数代码如下复制代码//设置导出文件名$outputFileName = 'total.xls';$xlsWriter = new PHPExcel_Writer_Excel5($resultPHPExcel);//ob_start(); ob_flush();header("Content-Type: application/force-download");header("Content-Type: application/octet-stream");header("Content-Type: application/download");header('Content-Disposition:inline;filename="'.$outputFileName.'"');header("Content-Transfer-Encoding: binary");header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");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");$xlsWriter->save( "php://output" );输出有错。
使用php导出excel时处理复杂表头的万能方法处理复杂表头时,使用PHP导出Excel表格的方法在使用PHP导出Excel表格时,当表头比较复杂时,可能会遇到一些困难。
然而,有一种简单而有效的方法可以处理这种情况。
首先,我们需要将表头信息保存在一个数组中。
该数组中的每个元素代表一个表头。
例如,我们可以使用以下代码定义一个包含复杂表头的数组:$tableHeaders = [['A1', 'B1', 'C1'],['A2', 'B2', 'C2'],['A3', 'B3', 'C3']];接下来,我们需要使用递归函数来合并和展开表头。
这样可以确保表头在导出Excel时正确格式化。
function mergeHeaders($headers, &$result, $startColumn = 0, $startRow = 0) {$maxRow = 1;foreach ($headers as $rowIndex => $headerRow) {foreach ($headerRow as $columnIndex => $headerCell) {$cell = $result->getActiveSheet()->getCellByColumnAndRow($columnIndex + $startColumn, $rowIndex + $startRow);$cell->setValue($headerCell);$maxRow = max($maxRow, $rowIndex + 1);}}$result->getActiveSheet()->mergeCellsByColumnAndRow($startColumn, $startRow, $startColumn + count($headers[0]) - 1, $startRow);if (count($headers) > 1) {mergeHeaders(array_slice($headers, 1), $result, $startColumn, $startRow + $maxRow);}}在上述代码中,mergeHeaders函数接受表头数组、Excel对象以及起始列和行作为参数。
PHP导出到Excel表格两种⽅法可将科学计数法改为⽂本格式导出⽅法⼀使⽤table输出导出1//导出代码2public function export(){3 set_time_limit(0);4 ini_set('memory_limit','1024M');//设置导出最⼤内存5 $ranking = self::getResult();//获得需要导出的数据6 //输出的表头7 $_pre = array(8 "listing" => "ListingID",9 "salesbefore" => "前⼗天销量",10 "salesafter" => "后⼗天销量",11 "saleschange" => "涨跌销量",12 "percentchange" => "涨跌幅度(%)",13 );14 $date = date("YmdHis");//⽇期作为输出⽂件后缀15 $content = getXLSFromList($_pre,$ranking);//获得输出的表格内容16 header("Content-type:application/vnd.ms-execl;charset=gb2312");//设置导出格式17 header("Content-Disposition:attactment;filename=销量变化排⾏榜".$date.".xls");//设置导出⽂件名18 header("Pragma: no-cache");19 header("Expires: 0");20 echo$content;21 exit;22 }1//此⽅法建议写⼊公共⽅法通过数组遍历得出导出报表类型结构2function getXLSFromList($pres,$lists){3// 内容太⼤建议搜索少量再导出4// if(count($lists)>=20000)5// {6// header("Content-Type:text/html;charset=utf-8");7// echo "<br/><h1 style='color:red'>Export data is too large, please narrow your search!</h1><br/>";8// exit;9// }10$keys=array_keys($pres);//获取表头的键名11$content="";12$content.="<table border='1'><tr>";13 //输出表头键值14foreach($pres as$_pre){15$content.="<td>$_pre</td>";16 }17$content.="</tr>";18foreach($lists as$_list){19$content.= "<tr>";20foreach($keys as$key){21$content.= "<td style='vnd.ms-excel.numberformat:@'>".$_list[$key]."</td>"; //style样式将导出的内容都设置为⽂本格式输出对应键名的键值即内容22 }23$content.="</tr>";24 }25$content.="</table>";26return$content;27 }导出⽅法⼆使⽤PHPExcel导出1public function export(){2 set_time_limit(0);3ini_set('memory_limit','1024M');4$ranking = self::getResult(); //获取需要导出的内容5include_once(EXTEND_PATH . 'Library/ORG/PHPExcel/PHPExcel.class.php'); //引⼊PHPExcel⽂件6$objPHPExcel = new PHPExcel();7 //设置⽂件的⼀些属性,在xls⽂件——>属性——>详细信息⾥可以看到这些值8$objPHPExcel->getProperties()->setCreator("ctos")9 ->setLastModifiedBy("ctos")10 ->setTitle("Office 2007 XLSX Test Document")11 ->setSubject("Office 2007 XLSX Test Document")12 ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")13 ->setKeywords("office 2007 openxml php")14 ->setCategory("Test result file");15//设置列宽16$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(15);17$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(15);18$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(20);19$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(20);20$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(20);21//设置⽔平居中显⽰22$objPHPExcel->getActiveSheet()->getStyle('A')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);23$objPHPExcel->getActiveSheet()->getStyle('B')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);24$objPHPExcel->getActiveSheet()->getStyle('C')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);25$objPHPExcel->getActiveSheet()->getStyle('D')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);26$objPHPExcel->getActiveSheet()->getStyle('E')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);27$objPHPExcel->setActiveSheetIndex(0) // set table header content28 ->setCellValue('A1', 'Listing ID')29 ->setCellValue('B1', '前⼗天销量')30 ->setCellValue('C1', '后⼗天销量')31 ->setCellValue('D1', '涨跌销量')32 ->setCellValue('E1', '涨跌幅度(%)')33$a = 1; //设置默认值34foreach($ranking as$k){35$a++;36$objPHPExcel->setActiveSheetIndex(0)37 ->setCellValueExplicit('A'.$a, $k['listing'],PHPExcel_Cell_DataType::TYPE_STRING)//设置数字的科学计数法显⽰为⽂本38 ->setCellValue('B'.$a, $k['salesbefore'])39 ->setCellValue('C'.$a, $k['salesafter'])40 ->setCellValue('D'.$a, $k['saleschange'])41 ->setCellValue('E'.$a, $k['percentchange'])42//设置⾃动换⾏43$objPHPExcel->getActiveSheet()->getStyle("A$a")->getAlignment()->setWrapText(true);44$objPHPExcel->getActiveSheet()->getStyle("B$a")->getAlignment()->setWrapText(true);45 }46$objPHPExcel->getActiveSheet()->setTitle('销量变化排⾏榜');47$objPHPExcel->setActiveSheetIndex(0);48// excel头参数49header('Content-Type: application/vnd.ms-excel');50header('Content-Disposition: attachment;filename="销量变化排⾏榜('.date('YmdHis').').xls"'); //⽇期为⽂件名后缀51header('Cache-Control: max-age=0');52$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); //excel5为xls格式,excel2007为xlsx格式53$objWriter->save('php://output');54 }。
PHP直播系统中,后台如何导出主播和观众的Excel数据表数据是当代互联网中重要的组成部分,每一个平台的背后都牵扯到各种数据,以目前较为火爆的直播系统,短视频程序为例,里面比较明显的数据大致分为两大类,一类是主播的数据组成,一类是观众的数据组成,后台是生产数据的机器,每一个平台都可以根据自己想要得到什么样的数据去做开发,数据也是衡量一个平台优劣势最好的证明,所以运营者都习惯去做数据的分析。
那PHP直播系统当中,如何利用工具导出自己先要的数据呢。
PHP导出文档,可以使用PHPExcel这个现成的第三方类库,使用这个类库可以轻松实现导出文档功能。
1、准备工作:(1).PHPExcel类库的下载2、具体操作:将下载下来的文件放到可以加载到的地方,里面有很多的文件,我们只需要加载里面的PHPExcel.php文件就可以了,这一个文件就可以帮助我们实现文件的导出功能。
它是一个多类的结合文件,我们需要用到PHPExcel类里面的多个方法。
$obj=new PHPExcel();$obj->setActiveSheetIndex($i);$obj->getActiveSheet($i)->setCellValue(‘A$a’,’xx’)->setCellValue(‘B$a’,’xx’);$obj->getActiveSheet()->setTitle(‘xxx’);date_default_timezone_set($b);header(‘pragma:public’);header(‘Content-type:application/vnd.ms-excel;charset=utf-8;name=$ c.xls’);header(“Content-Disposition:attachment;filename=$c.xls”);$objs= PHPExcel_IOFactory::createWriter($obj,’$e’);$objs->save(‘php://output’);(1)首先要实例化PHPExcel这个类(2)$i:这个参数表示选择导出的文件存放在Excel表格中第几页,如:$i=0,存放在第一页(3)$a:这个参数表示将导出的数据放在A列的第几行或者其他列的第几行(4)xx:这个参数表示这一列代表的数据名称(5)xxx:这个参数表示导出文件的sheet名称是什么(6)$b:这个参数表示编码方式(7)$c:这个参数表示文件的名字(8)$e:这个参数表示文件的格式3、示例public function explode_post(){vendor("PHPExcel.PHPExcel");$objPHPExcel = new \PHPExcel(); //创建PHPExcel实例$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', 'ID');$objPHPExcel->getActiveSheet(0)->setCellValue('A1', 'ID')->setCellValue('B1', 'name')->setCellValue('C1', 'number')->setCellValue('D1', 'status');$objPHPExcel->getActiveSheet()->setTitle('1'); //设置sheet的名称/*--------------下面是设置保存路径------------------*/date_default_timezone_set("Asia/Shanghai");$date = date("YmdHi");header('pragma:public');header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$date.'.xls"');header("Content-Disposition:attachment;filename=$date.xls");//attachment新窗口打印inline本窗口打印$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel5');//Excel5为xls格式,excel2007为xlsx格式$objWriter->save('php://output');//这句话必须要加,否侧会报错exit;}在直播系统开发的过程中,很多重要,并且需要分析的数据大部分都会做导出,以便于运营者来检查运营纪录数据,在直播系统中,主播的在线直播数据,以及类工会的分成,工会主播,观众充值等等这些数据都是平台运营者比较关注的,后台开发者可以根据平台的需要,做不同的Excel数据导出。
PHP导出Excel表格,并对导出的数据进行分表保存<?php
/**
* 主要用户测试数据导出到excel表格,当数据量很大时,需要对导出的excel表格进行分表 * 此类就是主要用于处理这类情况下产生的问题。
*/
require_once '../Classes/PHPExcel.php';
// 创建一个处理对象实例
$objExcel = new PHPExcel();
// 创建文件格式写入对象实例
$objWriter = new PHPExcel_Writer_Excel5($objExcel); // 用于其他版本格式
//设置文档基本属性
$objProps = $objExcel->getProperties();
$objProps->setCreator("sxx"); //设置作者名称
$objProps->setLastModifiedBy("sxx"); // 设置最后一次保存者名称
$objProps->setTitle("Office EXCELL"); // 设置标题
$objProps->setSubject("Office EXCELL TEST"); //设置主题
$objProps->setDescription("EXCELL了TEST"); // 设置备注
$objProps->setKeywords("office excel PHPExcel"); // 设置标记 $objProps->setCategory("Test"); //设置类别
//定义excel表名称,要是中文要对名称进行编码处理,否则为乱码
$excelname=array(iconv('utf-8','gb2312', '名称
1'),iconv('utf-8','gb2312', '名称2'));
//定义excel内工作表名称,此处为中文没有遇到乱码情况
$sheetname=array(array('工作表11','工作表12'),array('工作表21','工作表22'));
//生成excel文件 2个
for ($i=0;$i<2;$i++) {
//每个文件生成2个工作表
for ($j=0;$j<2;$j++) {
$GSheet = $j+1;
if ($j==0) {
$objExcel->setActiveSheetIndex($j);
$objActSheet = $objExcel->getActiveSheet();
$objActSheet->setTitle($sheetname[$i][$j].$GSheet); }else{
//添加一个新的worksheet
$objExcel->createSheet();
$objActSheet = $objExcel->getSheet($j);
$objActSheet->setTitle($sheetname[$i][$j].$GSheet); }
// 写入工作表中的具体内容开始
//设置标题内容
$objActSheet->setCellValue("A1", '标题1');
$objActSheet->setCellValue("B1", '标题2');
//设置宽度
$objActSheet->getColumnDimension('A')->setAutoSize(true); $objActSheet->getColumnDimension('B')->setAutoSize(true);
//合并单元格
//$objActSheet->mergeCells('B1:C22');
//分离单元格
//$objActSheet->unmergeCells('B1:C22');
//填写作品信息
if($j == 0){
$s=2;
}else{
$s=501;
}
for($k=$s;$k<=1000;$k++){
if($k >500){
$k -=499;
}
$result = $objActSheet->setCellValue("A$k", '111');
$objActSheet->setCellValue("B$k", '222');
$objActSheet->setCellValue("C$k", $k);
if($k%500 == 0){
echo $k;
unset($objActSheet);break;
}
}
// 写入工作表中的具体内容结束
// 一个excel完成后释放变量,便于下一个excel表的建立
}
$outputFileName = $excelname[$i].'.xls';
if(file_exists($outputFileName)){
if(unlink($outputFileName)){
$objWriter->save($outputFileName);//保存文件
}
}else {
$objWriter->save($outputFileName);//保存文件 }
echo $outputFileName;
#$objWriter->save($outputFileName);//保存文件 }。