根據(jù)下列編碼程序可以。
創(chuàng)新互聯(lián)公司是一家從事企業(yè)網(wǎng)站建設(shè)、做網(wǎng)站、網(wǎng)站建設(shè)、行業(yè)門戶網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)制作的專業(yè)網(wǎng)站制作公司,擁有經(jīng)驗(yàn)豐富的網(wǎng)站建設(shè)工程師和網(wǎng)頁(yè)設(shè)計(jì)人員,具備各種規(guī)模與類型網(wǎng)站建設(shè)的實(shí)力,在網(wǎng)站建設(shè)領(lǐng)域樹立了自己獨(dú)特的設(shè)計(jì)風(fēng)格。自公司成立以來曾獨(dú)立設(shè)計(jì)制作的站點(diǎn)上1000+。
1./*** 批量導(dǎo)出數(shù)據(jù)* @param $arr 從數(shù)據(jù)庫(kù)查詢出來,即要導(dǎo)出的數(shù)據(jù)* ?$name excel表歌名*/
2.function expExcel($arr,$name){?require_once 'PHPExcel.php';
3. //實(shí)例化?$objPHPExcel = new PHPExcel();?/*右鍵屬性所顯示的信息*/
4.$objPHPExcel-getProperties()-setCreator("zxf") ?//?-setLastModifiedBy("zxf") ?//最后一? -setTitle('數(shù)據(jù)EXCEL導(dǎo)出') ?//標(biāo)題-setSubject('數(shù)據(jù)EXCEL導(dǎo)出') //主題setDescription('導(dǎo)出數(shù)據(jù)') ?//描setKeywords("excel") ? //標(biāo)記setCategory("result file"); ?//類別
5. //設(shè)置當(dāng)前的表格??$objPHPExcel-setActiveSheetIndex(0);// 設(shè)置表格第一行顯示內(nèi)容$objPHPExcel-getActiveSheet()? -setCellValue('A1', '業(yè)主姓名')?-setCellValue('B1', '密碼')-setCellValue('C1', '手機(jī)號(hào)碼'? -setCellValue('D1', '地址')
6.//設(shè)置第一行為紅色字體?-getStyle('A1:D1')-getFont()-getColor()-setARGB(PHPExcel_Style_Color::COLOR_RED);$key = 1;?/*以下就是對(duì)處理Excel里的數(shù)據(jù)。
講的復(fù)雜了?。x0d\x0a你先在一個(gè)完整版的PHPExcel之后解壓,在“Examples”目錄下會(huì)找到一大堆例子,根據(jù)你的要求這個(gè)“01simple-download-xlsx.php”文件就可以了!\x0d\x0a注:你先保持“01simple-download-xlsx.php”文件所在的目錄位置不要變,測(cè)試好了,再改變名,移到別的地方,地方變了的話,文件里的 “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', '序列')\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ù)訪問錯(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 ";//查詢這一張表的條件\x0d\x0a$resultgroups=mysql_query($sqlgroups);\x0d\x0a$numrows=mysql_num_rows($resultgroups);\x0d\x0aif ($numrows0)\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)的名稱\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}
昨天項(xiàng)目里有個(gè)新需求,客戶希望把一些數(shù)據(jù)能導(dǎo)出成為Excel表格,剛開始用PHP原生輸入Excel表格,發(fā)現(xiàn)效果不是很理想,于是找到一個(gè)比較著名的庫(kù):PHPExcel。下面是一個(gè)簡(jiǎn)單的demo,分享給大家,希望可以幫到有同樣需求的朋友。
1.百度:phpexcel,結(jié)果如圖所示,點(diǎn)擊第一個(gè)結(jié)果;
PHP導(dǎo)出Excel,PHP輸入Excel
2.進(jìn)入官網(wǎng)后,找到右邊的download按鈕,下載,下載完成的是一個(gè)壓縮文件,解壓放到你的項(xiàng)目目錄里,根據(jù)個(gè)人情況而定;
PHP導(dǎo)出Excel,PHP輸入Excel
PHP導(dǎo)出Excel,PHP輸入Excel
3.因?yàn)檫@里給大家做演示,所以建了一個(gè)測(cè)試文件,有點(diǎn)基礎(chǔ)的都能明白是怎么回事,下面進(jìn)入代碼;
PHP導(dǎo)出Excel,PHP輸入Excel
4.
//引入PHPExcel庫(kù)文件(路徑根據(jù)自己情況)
include './phpexcel/Classes/PHPExcel.php';
//創(chuàng)建對(duì)象
$excel = new PHPExcel();
//Excel表格式,這里簡(jiǎn)略寫了8列
$letter = array('A','B','C','D','E','F','F','G');
//表頭數(shù)組
$tableheader = array('學(xué)號(hào)','姓名','性別','年齡','班級(jí)');
//填充表頭信息
for($i = 0;$i count($tableheader);$i++) {
$excel-getActiveSheet()-setCellValue("$letter[$i]1","$tableheader[$i]");
}
PHP導(dǎo)出Excel,PHP輸入Excel
5.
//表格數(shù)組
$data = array(
array('1','小王','男','20','100'),
array('2','小李','男','20','101'),
array('3','小張','女','20','102'),
array('4','小趙','女','20','103')
);
//填充表格信息
for ($i = 2;$i = count($data) + 1;$i++) {
$j = 0;
foreach ($data[$i - 2] as $key=$value) {
$excel-getActiveSheet()-setCellValue("$letter[$j]$i","$value");
$j++;
}
}
PHP導(dǎo)出Excel,PHP輸入Excel
6.
//創(chuàng)建Excel輸入對(duì)象
$write = new PHPExcel_Writer_Excel5($excel);
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/vnd.ms-execl");
header("Content-Type:application/octet-stream");
header("Content-Type:application/download")
header('Content-Disposition:attachment;filename="testdata.xls"');
header("Content-Transfer-Encoding:binary");
$write-save('php://output');
PHP導(dǎo)出Excel,PHP輸入Excel
7.打開頁(yè)面,刷新的時(shí)候會(huì)彈出對(duì)話框,讓你選擇文件保存路徑和文件名稱,我直接放在了桌面上,如圖所示;
PHP導(dǎo)出Excel,PHP輸入Excel
PHP導(dǎo)出Excel,PHP輸入Excel
8.打開表格后,數(shù)據(jù)和格式跟代碼中的一致,說明PHP導(dǎo)出的Excel是正確的。如果出現(xiàn)錯(cuò)誤,檢查一下你的表格數(shù)組和數(shù)據(jù)數(shù)組吧。
PHP導(dǎo)出Excel,PHP輸入Excel
php導(dǎo)出大量數(shù)據(jù)到Excel,可以通過生成多個(gè)Excel文件,然后壓縮成壓縮包解決。
方案是:假如我們數(shù)據(jù)庫(kù)有10w條數(shù)據(jù),每2000條數(shù)據(jù)生成一個(gè)Excel文件,這樣每次只要從數(shù)據(jù)庫(kù)里查詢出2000條數(shù)據(jù)即可,一定要分頁(yè)去查詢。
原因:主要是數(shù)據(jù)庫(kù)性能和寫文件性能。分頁(yè)查詢可以解決數(shù)據(jù)庫(kù)壓力的問題, 生成多個(gè)文件可以解決單個(gè)文件太大,后期維護(hù)Excel文件的問題。
要注意的:
1. 在導(dǎo)出邏輯文件開頭,一定要聲明 set_time_limit(0) ,防止腳本超時(shí);
2. 每個(gè)文件生成后,適當(dāng)?shù)膕leep一下,讓程序休息一下下;
3. 因?yàn)橐淮螌?dǎo)出最后要將生成的多個(gè)Excel文件打包成一個(gè)壓縮包,所以要?jiǎng)h除掉生成的Excel文件,節(jié)省服務(wù)器存儲(chǔ)空間;