php導(dǎo)出大量數(shù)據(jù)的Excel:
成都創(chuàng)新互聯(lián)主要從事網(wǎng)站建設(shè)、成都做網(wǎng)站、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)義馬,十載網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專(zhuān)業(yè),歡迎來(lái)電咨詢建站服務(wù):18982081108
PHP從數(shù)據(jù)庫(kù)分多次讀取100萬(wàn)行記錄,和分多次將100萬(wàn)行寫(xiě)入文本文件都沒(méi)問(wèn)題
Excel可以支持100萬(wàn)行記錄,Excel 2003最大支持65536行,從2007版開(kāi)始支持104萬(wàn)行了,目前2007的盜版應(yīng)該比較普及了-_-! 問(wèn)清楚客戶是什么版本。
要導(dǎo)出excel的理由是非常充分和正確的,應(yīng)該繼續(xù)堅(jiān)持。業(yè)務(wù)人員最熟悉的就是Excel,實(shí)在不熟悉現(xiàn)學(xué)現(xiàn)用也比別的快。只是要注意,當(dāng)數(shù)據(jù)量達(dá)到10萬(wàn)行這個(gè)級(jí)別時(shí),Excel的公式填充將會(huì)非常非常慢,如果再有LOOKUP()公式,基本上十分鐘內(nèi)處理CPU滿載進(jìn)程管理器殺不掉的狀態(tài),這時(shí)候其實(shí)xampp + phpmyadmin是一個(gè)易用性和性能都最平衡的選擇
PHPExcel輸出的是Excel XML格式,有個(gè)XML頭和尾,中間是數(shù)據(jù)Body,需要將100萬(wàn)行都賦值給一個(gè)數(shù)組才可以調(diào)用PHPExcel-write(),這容易導(dǎo)致PHP執(zhí)行超時(shí)或者內(nèi)存超限,不妨調(diào)整一下php.ini配置,把超時(shí)時(shí)間和內(nèi)存限制都改到很大
如果是輸出csv格式,那就太簡(jiǎn)單了,你的問(wèn)題可能是沒(méi)給字段內(nèi)容加引號(hào),加上引號(hào)再調(diào)用fputcsv試試?其實(shí)fputcsv做的事情特別簡(jiǎn)單,你甚至可以不管它,自己把CSV文件的每一行拼接好了之后用file_put_contents寫(xiě)入
分類(lèi): 電腦/網(wǎng)絡(luò) 程序設(shè)計(jì) 其他編程語(yǔ)言
問(wèn)題描述:
將數(shù)據(jù)庫(kù)的數(shù)據(jù)查詢到嵌入在PHP中的EXCEL里面.實(shí)現(xiàn)多條紀(jì)錄的修改.
數(shù)據(jù)庫(kù)里面有幾萬(wàn)條數(shù)據(jù),每天要修改幾百條,一條一條修改很麻煩,怎樣能夠,實(shí)現(xiàn)上面說(shuō)的這種功能,然后可以批量修改.
解析:
可以選擇一些相關(guān)的,然后統(tǒng)一批量改
SQL Server 中直接可以把excel文件加載進(jìn)來(lái)當(dāng)作表處理。
使用Sql腳本怎么處理都可以了。
其他數(shù)據(jù)庫(kù),那還有寫(xiě)處理excel的代碼
你的數(shù)據(jù)在EXCEL里面,需要用PHP程序去修改它,因?yàn)槟愕臋C(jī)器上有WEB,你希望遠(yuǎn)程操作,對(duì)嗎?
其實(shí)不難,你在ODBC里面建立一個(gè)數(shù)據(jù)源,指向你的EXCEL文件,PHP寫(xiě)程序用SQL操作ODBC數(shù)據(jù)源是很簡(jiǎn)單的,例子:
?PHP
$id=odbc_connect("ODBC數(shù)據(jù)源名稱(chēng)","用戶名","密碼");
if ($id!=0){
$max_display_rec=500;
$query_str="任意的SQL語(yǔ)句";
$qu=odbc_exec($id,$query_str);
if ($qu) echo "執(zhí)行 $query_str 成功!";
else echo "執(zhí)行 $query_str 失敗!";
} else echo '數(shù)據(jù)庫(kù)連接失敗!
覺(jué)得你可以做這樣一個(gè)界面:
一個(gè)列表,每行前有一個(gè)復(fù)選框,讓用戶選中要修改的記錄
點(diǎn)擊提交后,將用戶所選的內(nèi)容以文本框的形勢(shì)顯示,如一頁(yè)不夠,可分頁(yè)。
當(dāng)用戶修改結(jié)束后,統(tǒng)一保存
下面是我寫(xiě)的一個(gè)PHP導(dǎo)出數(shù)據(jù)到CSV問(wèn)價(jià)的函數(shù),你到時(shí)候直接調(diào)用就行了
/**
*?導(dǎo)出CSV文件
*?@param?string?$fileName 文件名字
*?@param?string|array?$data?導(dǎo)出數(shù)據(jù),csv格式的字符串|數(shù)值數(shù)組
*?@param?string?$to_encoding?目標(biāo)轉(zhuǎn)換編碼
*?@param?string?$from_encoding?當(dāng)前編碼
*/
function?exportCSV($fileName?=?'',?$data?=?'',?$to_encoding?=?'gb2312',?$from_encoding?=?'utf-8')?{
$fileName?=?empty($fileName)???date('YmdHis')?:?$fileName;
//?文件標(biāo)簽
Header("Content-type:?application/octet-stream");
header("Content-type:?application/vnd.ms-excel;?charset=$from_encoding");
Header("Content-Disposition:?attachment;?filename=$fileName.csv");
$str?=?'';
if($data)?{
if(is_array($data))?{
foreach?($data?as?$v)?{
if(is_array($v))?{
foreach?($v?as?$vo)?{
$str?.=?(is_numeric($vo)???"'".$vo?:?$vo."").",";
}
$str?=?trim($str,?",")."\r\n";
}?else?{
$str?.=?(is_numeric($v)???"'".$v?:?$v).",";
}
}
$str?=?trim($str,?",")."\r\n";
}?else?{
$str?=?$data;
}
}
echo?mb_convert_encoding($str,?"gb2312",?"utf-8");
exit;
}
如果是將數(shù)據(jù)導(dǎo)出到excel,應(yīng)該是用vba方便點(diǎn)。
如果非要用php,請(qǐng)參考:
Header( "Content-type: application/octet-stream ");
Header( "Accept-Ranges: bytes ");
Header( "Content-type:application/vnd.ms-excel ");
Header( "Content-Disposition:attachment;filename=test.xls ");
$con = mysql_connect("localhost","root","123456");
mysql_select_db("db_test");
mysql_query('set names utf8');
$sql = "select id,FirstName,LastName,Age,Hometown,Job from user";
$result = mysql_query($sql,$con);
echo "id\tFirstName\tLastName\tAge\tHometown\tJob";
while ($rs=mysql_fetch_array($result)){
echo "\n";
echo $rs['id']."\t".$rs['FirstName']."\t".$rs['LastName']."\t".$rs['Age']."\t".$rs['Hometown']."\t".$rs['Job'];
}
本文標(biāo)題:php入excel數(shù)據(jù) php讀取Excel
URL網(wǎng)址:http://www.chinadenli.net/article34/docdpse.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、Google、服務(wù)器托管、、網(wǎng)站策劃、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)