php excel批量导入,PHP将excel文件中的数据批量导入到数据库中
這幾天在做項(xiàng)目時(shí),遇到了需要批量導(dǎo)入數(shù)據(jù)的情況,用戶將excel表格提交后,需要我們后臺(tái)這邊將excel表格信息中的內(nèi)容全部插入到數(shù)據(jù)表中。當(dāng)然,前提是用戶給我們的excel表格中的信息必須和我們表中的字段信息時(shí)對(duì)應(yīng)的才行,下面是我這邊后臺(tái)進(jìn)行批量導(dǎo)入數(shù)據(jù)的實(shí)現(xiàn)步驟。
首先我們需要下載phpExcel
phpExcel是用來(lái)操作Office Excel 文檔的一個(gè)PHP類庫(kù),它基于微軟的OpenXML標(biāo)準(zhǔn)和PHP語(yǔ)言。可以使用它來(lái)讀取、寫(xiě)入不同格式的電子表格.
有需要這個(gè)類庫(kù)的童鞋可以找我要,本人郵箱823410261@qq.com。
下載好phpExcel后,下面就是編碼實(shí)現(xiàn)部分了,首先說(shuō)下本人處理的整體思路。
首先是需要得到excel表格中的數(shù)據(jù),其次是需要將這些數(shù)據(jù)做成符合SQL規(guī)范的格式,其中的細(xì)節(jié)處理將在下面的代碼中展示,最后是將獲取的數(shù)據(jù)連同SQL語(yǔ)句,一起在程序中執(zhí)行,將所有結(jié)果插入到數(shù)據(jù)表中。
require_once '../Classes/PHPExcel.php';
function getFileExcle($value){
$cgsdiseasesinterface = new Cgs_diseases_interface();
$filePath = $value;//$value為需要導(dǎo)入數(shù)據(jù)的excel文件
$PHPExcel = new PHPExcel();
/**默認(rèn)用excel2007讀取excel,若格式不對(duì),則用之前的版本進(jìn)行讀取*/
$PHPReader = new PHPExcel_Reader_Excel2007();
if(!$PHPReader->canRead($filePath)){
$PHPReader = new PHPExcel_Reader_Excel5();
if(!$PHPReader->canRead($filePath)){
echo 'no Excel';
return ;
}
}
$PHPExcel = $PHPReader->load($filePath);
/**讀取excel文件中的第一個(gè)工作表*/
$currentSheet = $PHPExcel->getSheet(0);
/**取得最大的列號(hào)*/
$allColumn = $currentSheet->getHighestColumn();
/**取得一共有多少行*/
$allRow = $currentSheet->getHighestRow();
$row = array();
/**從第二行開(kāi)始輸出,因?yàn)閑xcel表中第一行為列名*/
for($currentRow = 2;$currentRow <= $allRow;$currentRow++){
/**從第A列開(kāi)始輸出*/
$col = array();
for($currentColumn= 'A';$currentColumn<= $allColumn; $currentColumn++){
$val = $currentSheet->getCellByColumnAndRow(ord($currentColumn) - 65,$currentRow)->getValue();/**ord()將字符轉(zhuǎn)為十進(jìn)制數(shù)*/
array_push($col,$val);
}
array_push($row,$col);
}
foreach($row as $key=>$value){
$row[$key][1] = '\''.$value[1].'\'';
}
foreach($row as $key=>$value){
$row[$key] = implode(",",$value);
}
$row = implode("),(",$row);
$row = '('.$row.')';
$res = $cgsdiseasesinterface->insertDiseasesInformation($row);//該函數(shù)將數(shù)據(jù)插入到數(shù)據(jù)庫(kù)中
if($res){
echo json_encode(['code' => CODE_SUCCESS, 'result' => '批量導(dǎo)入成功']);
}else{
echo json_encode(['code' => CODE_ERROR, 'result' => '批量導(dǎo)入失敗']);
}
}
這里有一個(gè)點(diǎn)需要主要的是因?yàn)?currentRow是從2開(kāi)始的,所以第一行應(yīng)該是對(duì)應(yīng)的字段的解釋,從第二行開(kāi)始才是我們所需要的數(shù)據(jù),大家可以根據(jù)自己程序的實(shí)際需要進(jìn)行更改。
這里我是將所以的數(shù)據(jù)都做了字符串的拼接,好處是在數(shù)據(jù)庫(kù)是短連接時(shí),可以只需要連接一次數(shù)據(jù)庫(kù),這樣節(jié)約了時(shí)間和系統(tǒng)資源,如果數(shù)據(jù)庫(kù)的設(shè)置是長(zhǎng)連接,則用字符串拼接的優(yōu)勢(shì)不明顯。當(dāng)然,大家其實(shí)也可以用循環(huán)來(lái)實(shí)現(xiàn)將數(shù)據(jù)插入到表中,這種方式的優(yōu)勢(shì)是不需要對(duì)數(shù)據(jù)進(jìn)行復(fù)雜的拼接處理,但壞處就是我剛才說(shuō)的,增加了運(yùn)行的時(shí)間,并相對(duì)來(lái)說(shuō)更消耗系統(tǒng)資源。
總結(jié)
以上是生活随笔為你收集整理的php excel批量导入,PHP将excel文件中的数据批量导入到数据库中的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 红旗H9,将开启国产真豪华车
- 下一篇: 上汽红岩390闭锁如何打开?