在網(wǎng)站建設(shè)過程中,時不時就會遇到需要增加大量數(shù)據(jù)的情況,比如說產(chǎn)品數(shù)據(jù),會員數(shù)據(jù)之類的,從其他站點(diǎn)搬遷到新的網(wǎng)站上,如果手動一條一條的去增加,那無疑是會浪費(fèi)大量的時間和精力;而且數(shù)據(jù)表結(jié)構(gòu)設(shè)計(jì)在不相同的情況下,也不能完全的直接導(dǎo)入原來的數(shù)據(jù)表,所以這種情況下,可以把原來的數(shù)據(jù)表導(dǎo)出為Excel文檔,然后再通過導(dǎo)入Excel文檔到數(shù)據(jù)庫,這樣一來就節(jié)省了人力物力以及大量的時間,而且也保證了數(shù)據(jù)不會丟失。
大概的頁面是這樣的,這里是設(shè)置一個Excel文檔模板給后臺管理人員參考,以免Excel文檔結(jié)果不對,導(dǎo)致導(dǎo)入數(shù)據(jù)出錯;
Excel文檔的結(jié)構(gòu)是這樣的,下面做功能程序的時候需要用到;
這里的ABCDE就是對應(yīng)Excel文檔的列名稱,左邊對應(yīng)的就是數(shù)據(jù)表名稱,這里根據(jù)個人情況設(shè)置即可;
下面直接貼出代碼:
table_excel方法:
public function table_excel(){
if (IS_POST){
ini_set('memory_limit', '256M');//程序運(yùn)行內(nèi)存
$file_url=I('post.file_url','');
if($file_url==''){;
$this->error('請先上傳文件');
}
$file_url=str_replace('/Uploads','Uploads',$file_url);//去掉第一個斜線,因?yàn)槿≡~excel只能用相對路徑。
$array=excelImport($file_url,1,'E');
//從第一行開始,E列結(jié)束,需要修改excelImport($filename, $begin) 為 excelImport($filename, $begin,$allColumn); 去掉 $allColumn = $currentSheet->getHighestColumn();輸出$array就知道怎么導(dǎo)入了
// var_dump($array);exit();
$ModelObj = D('Member');
if(!count($array)){
$this->error('上傳的文件不正確');
}
$lists=array();
$this->status=1;
$num=0;
foreach($array as $key => $var){
$data['title'] = $var['A'];
$data['number'] = $var['B'];
$data['courses'] = $var['C'];
$data['place'] =$var['D'];
$data['time'] = $var['E'];
$data['order_id'] = 100;
$data['is_show'] = 1;
$flag = $ModelObj->data($data)->add();
if($flag>0){
$num++;
}
}
unset($data);
unset($var['A']);
unset($var['B']);
unset($var['C']);
unset($var['D']);
unset($var['E']);
$this->success('成功導(dǎo)入'.$num.'條信息');
}
$this->display();
}
excelImport方法:
/**
* 讀取Excel文件
*/
function excelImport($filename, $begin,$allColumn) {
Vendor('PHPExcel.PHPExcel');
//建立reader對象
$PHPReader = new PHPExcel_Reader_Excel2007();
if (!$PHPReader->canRead($filename)) {
$PHPReader = new PHPExcel_Reader_Excel5();
if (!$PHPReader->canRead($filename)) {
return array();
}
}
//建立excel對象,此時你即可以通過excel對象讀取文件,也可以通過它寫入文件
$PHPExcel = $PHPReader->load($filename);
/* * 讀取excel文件中的第一個工作表 */
$currentSheet = $PHPExcel->getSheet(0);
/* * 取得最大的列號 */
// $allColumn = $currentSheet->getHighestColumn();
/* * 取得一共有多少行 */
$allRow = $currentSheet->getHighestRow();
$returnCell = '';
//循環(huán)讀取每個單元格的內(nèi)容。注意行從1開始,列從A開始
for ($rowIndex = $begin; $rowIndex <= $allRow; $rowIndex++) {
for ($colIndex = 'A'; $colIndex <= $allColumn; $colIndex++) {
$addr = $colIndex . $rowIndex;
$cell = $currentSheet->getCell($addr)->getValue();
if ($cell instanceof PHPExcel_RichText) {
//富文本轉(zhuǎn)換字符串
$returnCell[$rowIndex][$colIndex] = $cell->__toString();
} else {
$returnCell[$rowIndex][$colIndex] = $cell;
}
}
}
return $returnCell;
}
PHP是一門專門開發(fā)網(wǎng)站的語言,非常好用,而且還是開源免費(fèi)的,配合開源數(shù)據(jù)庫MYSQL,基本天衣無縫。
如沒特殊注明,文章均為方維網(wǎng)絡(luò)原創(chuàng),轉(zhuǎn)載請注明來自http://www.sdlwjx666.com/news/6535.html