php如何導(dǎo)出數(shù)據(jù)
php如何導(dǎo)出數(shù)據(jù)
php導(dǎo)出數(shù)據(jù)有兩種方式,一種是通過(guò)封裝好的phpexcel導(dǎo)出,一種是通過(guò)table導(dǎo)出數(shù)據(jù),指定header就可以導(dǎo)出數(shù)據(jù)。上面是導(dǎo)出到excel中的方法,當(dāng)然你也可以導(dǎo)出數(shù)據(jù)直接到數(shù)據(jù)庫(kù),或者你也可以到處數(shù)據(jù)到文件中,這個(gè)主要看你導(dǎo)出數(shù)據(jù)的格式要求。
看你截圖顯示的是數(shù)組格式,可以通過(guò)循環(huán)遍歷然后導(dǎo)入到響應(yīng)的文件中。
PHP如何將查詢(xún)出來(lái)的數(shù)據(jù)導(dǎo)出成excel表格(**做一個(gè)按鈕)?
講的復(fù)雜了??!\\x0d\\x0a你先在一個(gè)完整版的PHPExcel之后解壓,在“Examples”目錄下會(huì)找到一大堆例子,根據(jù)你的要求這個(gè)“01simple-download-xlsx.php”文件就可以了!\\x0d\\x0a注:你先保持“01simple-download-xlsx.php”文件所在的目錄位置不要變,測(cè)試好了,再改變名,移到別的地方,地方變了的話(huà),文件里的 “require_once dirname(__FILE__) . \’/../Classes/PHPExcel.php\’;”的所在位置也要變!\\x0d\\x0a我們要改動(dòng)代碼很少,如下:\\x0d\\x0a// Add some data\\x0d\\x0a$objPHPExcel->setActiveSheetIndex(0)\\x0d\\x0a->setCellValue(\’A1\’, \’Hello\’)\\x0d\\x0a->setCellValue(\’B2\’, \’world!\’)\\x0d\\x0a->setCellValue(\’C1\’, \’Hello\’)\\x0d\\x0a->setCellValue(\’D2\’, \’world!\’);\\x0d\\x0a\\x0d\\x0a// Miscellaneous glyphs, UTF-8\\x0d\\x0a$objPHPExcel->setActiveSheetIndex(0)\\x0d\\x0a->setCellValue(\’A4\’, \’Miscellaneous glyphs\’)\\x0d\\x0a->setCellValue(\’A5\’, \’éàèùaê?????ü???ü?\’);\\x0d\\x0a、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、\\x0d\\x0a直接用的我的替換\\x0d\\x0a$objPHPExcel->setActiveSheetIndex(0)//這個(gè)就是現(xiàn)實(shí)導(dǎo)出的表**行,有幾列是根據(jù)你的那張表有幾列!\\x0d\\x0a->setCellValue(\’A1\’, \’單號(hào)\’)\\x0d\\x0a->setCellValue(\’B1\’, \’標(biāo)題\’)\\x0d\\x0a->setCellValue(\’C1\’, \’內(nèi)容\’)\\x0d\\x0a->setCellValue(\’D1\’, \’序列\(zhòng)’)\\x0d\\x0a->setCellValue(\’E1\’, \’數(shù)字\’);\\x0d\\x0a//下面實(shí)現(xiàn)的就是建立數(shù)據(jù)庫(kù)連接,直接到表,你的連接數(shù)據(jù)庫(kù)、表、字段應(yīng)該與我的不一樣,你可以參考\\x0d\\x0a$conn=@mysql_connect(\”localhost\”,\”root\”,\”root\”) or die(\”數(shù)據(jù)庫(kù)服務(wù)器連接錯(cuò)誤\”.mysql_error());//連接mysql數(shù)據(jù)庫(kù)\\x0d\\x0amysql_select_db(\”temp\”,$conn) or die(\”數(shù)據(jù)庫(kù)訪問(wèn)錯(cuò)誤\”.mysql_error());//數(shù)據(jù)庫(kù)\\x0d\\x0amysql_query(\”set character set gb2312\”);\\x0d\\x0amysql_query(\”set names gb2312\”);\\x0d\\x0a\\x0d\\x0a$sqlgroups=\”select * from test \”;//查詢(xún)這一張表的條件\\x0d\\x0a$resultgroups=mysql_query($sqlgroups);\\x0d\\x0a$numrows=mysql_num_rows($resultgroups);\\x0d\\x0aif ($numrows>0)\\x0d\\x0a{\\x0d\\x0a$count=1;\\x0d\\x0awhile($data=mysql_fetch_array($resultgroups))\\x0d\\x0a{\\x0d\\x0a$count+=1;\\x0d\\x0a$l1=\”A\”.\”$count\”;\\x0d\\x0a$l2=\”B\”.\”$count\”;\\x0d\\x0a$l3=\”C\”.\”$count\”;\\x0d\\x0a$l4=\”D\”.\”$count\”;\\x0d\\x0a$l5=\”E\”.\”$count\”;\\x0d\\x0a$objPHPExcel->setActiveSheetIndex(0) \\x0d\\x0a->setCellValue($l1, $data[\’id\’])//這就是你要導(dǎo)出表的字段、與對(duì)應(yīng)的名稱(chēng)\\x0d\\x0a->setCellValue($l2, $data[\’title\’])\\x0d\\x0a->setCellValue($l3, $data[\’content\’])\\x0d\\x0a->setCellValue($l4, $data[\’sn\’])\\x0d\\x0a->setCellValue($l5, $data[\’num\’]);\\x0d\\x0a}\\x0d\\x0a}
PHP 導(dǎo)出
echo 返回值是void,可以一次輸出多個(gè)值,多個(gè)值之間用逗號(hào)分隔。echo是語(yǔ)言結(jié)構(gòu)(language construct)也就是關(guān)鍵字,而并不是真正的函數(shù),因此不能作為表達(dá)式的一部分使用。
使用的時(shí)候不用加括號(hào),加上也可以。
只支持基本類(lèi)型,布爾型除外,echo true的時(shí)候顯示1,echo false的時(shí)候啥都沒(méi)有。echo不可以輸出數(shù)組類(lèi)型print 返回值是int,只能輸出一個(gè)字符串,不支持逗號(hào)分隔多個(gè)顯示變量的語(yǔ)法。print能輸出數(shù)組類(lèi)型的數(shù)據(jù),print_r 是函數(shù),不僅可以打印變量的的值,還能顯示變量類(lèi)型,而且也可以顯示數(shù)組和對(duì)象這樣復(fù)雜的變量類(lèi)型。print_r() 將把數(shù)組的指針移到**邊。
使用 reset() 可讓指針回到開(kāi)始處print_r()可以把字符串和數(shù)字簡(jiǎn)單地打印出來(lái),而數(shù)組則以括起來(lái)的鍵和值得列表形式顯示,并以Array開(kāi)頭。如, $a = array(\’name\’ => \’Fred\’, \’age\’ => \’15\’, \’wife\’ => \’Wilma\’);print_r($a);Output: Array{ [name] => Fred [age] => 15 [wife] => Wilma}對(duì)象也一樣。如, class P { var $name = \’nat\’; // …}$p = new P;print_r($p);Output: Object{[name] => nat}但print_r()輸出布爾值和NULL的結(jié)果沒(méi)有意義,因?yàn)槎际谴蛴”\\n\”。
因此用var_dump()函數(shù)更適合調(diào)試。printf()printf()源于C語(yǔ)言中的printf()。該函數(shù)輸出格式化的字符串。
語(yǔ)法: printf(format百科,arg1,arg2,arg++)format 規(guī)定字符串以及如何格式化其中的變量;arg1, arg2, ++ 等參數(shù)將插入到主字符串中的百分號(hào) (%) 符號(hào)處。該函數(shù)是逐步執(zhí)行的。在**個(gè) % 符號(hào)中,插入 arg1,在第二個(gè) % 符號(hào)處,插入 arg2,依此類(lèi)推。
如果 % 符號(hào)多于 arg 參數(shù),則您必須使用占位符。占位符**入 % 符號(hào)之后,由數(shù)字和 \”\\$\” 組成。
PHP導(dǎo)出excel 怎么做?
方法一:特點(diǎn),簡(jiǎn)單,省心,<?php header(\”Content-type:application/vnd.ms-excel\”);header(\”Content-Disposition:attachment;filename=test_data.xls\”);$tx=\’表頭\’; echo $tx.\”\\n\\n\”; //輸出內(nèi)容如下: echo \”姓名\”.\”\\t\”; echo \”年齡\”.\”\\t\”; echo \”學(xué)歷\”.\”\\t\”; echo \”\\n\”; echo \”張三\”.\”\\t\”; echo \”25\”.\”\\t\”; echo \”本科\”.\”\\t\”; ?>方法二: 引用google code中推薦的小類(lèi)庫(kù)(大體同方法一,比較復(fù)雜點(diǎn))http://code.google.com/p/php-excel/downloads/list方法三: PHPEXCEL 類(lèi)庫(kù),功能強(qiáng)大,支持win Excel2003 ,Win Excel2007.http://www.codeplex.com/PHPExcel<? //設(shè)置PHPExcel類(lèi)庫(kù)的include path set_include_path(\’.\’. PATH_SEPARATOR . \’D:\\Zeal\\PHP_LIBS\’ . PATH_SEPARATOR . get_include_path()); /** * 以下是使用示例,對(duì)于以 //// 開(kāi)頭的行是不同的可選方式,請(qǐng)根據(jù)實(shí)際需要 * 打開(kāi)對(duì)應(yīng)行的注釋。 * 如果使用 Excel5 ,輸出的內(nèi)容應(yīng)該是GBK編碼。
*/ require_once \’PHPExcel.php\’; // uncomment ////require_once \’PHPExcel/Writer/Excel5.php\’; // 用于其他低版本xls // or ////require_once \’PHPExcel/Writer/Excel2007.php\’; // 用于 excel-2007 格式 // 創(chuàng)建一個(gè)處理對(duì)象實(shí)例 $objExcel = new PHPExcel(); // 創(chuàng)建文件格式寫(xiě)入對(duì)象實(shí)例, uncomment ////$objWriter = new PHPExcel_Writer_Excel5($objExcel); // 用于其他版本格式 // or ////$objWriter = new PHPExcel_Writer_Excel2007($objExcel); // 用于 2007 格式 //$objWriter->setOffice2003Compatibility(true); //************************************* //設(shè)置文檔基本屬性 $objProps = $objExcel->getProperties(); $objProps->setCreator(\”Zeal Li\”); $objProps->setLastModifiedBy(\”Zeal Li\”); $objProps->setTitle(\”O(jiān)ffice XLS Test Document\”); $objProps->setSubject(\”O(jiān)ffice XLS Test Document, Demo\”); $objProps->setDescription(\”Test document, generated by PHPExcel.\”); $objProps->setKeywords(\”office excel PHPExcel\”); $objProps->setCategory(\”Test\”); //************************************* //設(shè)置當(dāng)前的sheet索引,用于后續(xù)的內(nèi)容操作。
//一般只有在使用多個(gè)sheet的時(shí)候才需要顯示調(diào)用。 //缺省情況下,PHPExcel會(huì)自動(dòng)創(chuàng)建**個(gè)sheet被設(shè)置SheetIndex=0 $objExcel->setActiveSheetIndex(0); $objActSheet = $objExcel->getActiveSheet(); //設(shè)置當(dāng)前活動(dòng)sheet的名稱(chēng) $objActSheet->setTitle(\’測(cè)試Sheet\’); //************************************* //設(shè)置單元格內(nèi)容 // //由PHPExcel根據(jù)傳入內(nèi)容自動(dòng)判斷單元格內(nèi)容類(lèi)型 $objActSheet->setCellValue(\’A1\’, \’字符串內(nèi)容\’); // 字符串內(nèi)容 $objActSheet->setCellValue(\’A2\’, 26); // 數(shù)值 $objActSheet->setCellValue(\’A3\’, true); // 布爾值 $objActSheet->setCellValue(\’A4\’, \’=SUM(A2:A2)\’); // 公式 //顯式指定內(nèi)容類(lèi)型 $objActSheet->setCellValueExplicit(\’A5\’, \’847475847857487584\’, PHPExcel_Cell_DataType::TYPE_STRING); //合并單元格 $objActSheet->mergeCells(\’B1:C22\’); //分離單元格 $objActSheet->unmergeCells(\’B1:C22\’); //************************************* //設(shè)置單元格樣式 // //設(shè)置寬度 $objActSheet->getColumnDimension(\’B\’)->setAutoSize(true); $objActSheet->getColumnDimension(\’A\’)->setWidth(30); $objStyleA5 = $objActSheet->getStyle(\’A5\’); //設(shè)置單元格內(nèi)容的數(shù)字格式。 // //如果使用了 PHPExcel_Writer_Excel5 來(lái)生成內(nèi)容的話(huà), //這里需要注意,在 PHPExcel_Style_NumberFormat 類(lèi)的 const 變量定義的 //各種自定義格式化方式中,其它類(lèi)型都可以正常使用,但當(dāng)setFormatCode //為 FORMAT_NUMBER 的時(shí)候,實(shí)際出來(lái)的效果被沒(méi)有把格式設(shè)置為\”0\”。需要 //修改 PHPExcel_Writer_Excel5_Format 類(lèi)源代碼中的 getXf($style) 方法, //在 if ($this->_BIFF_version == 0x0500) { (第363行附近)前面增加一 //行代碼: //if($ifmt === \’0\’) $ifmt = 1; // //設(shè)置格式為PHPExcel_Style_NumberFormat::FORMAT_NUMBER,避免某些大數(shù)字 //被使用科學(xué)記數(shù)方式顯示,配合下面的 setAutoSize 方法可以讓每一行的內(nèi)容 //都按原始內(nèi)容全部顯示出來(lái)。