當前位置:首頁 » 數據倉庫 » php導入excel到資料庫
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

php導入excel到資料庫

發布時間: 2022-10-06 22:44:35

❶ 利用php導入excel文件

【步驟1】在前台html頁面進行上傳文件

<formmethod="post"action="php文件"enctype="multipart/form-data">
<h3>導入Excel表:</h3><inputtype="file"name="file_stu"/>
<inputtype="submit"value="導入"/>
</form>

【步驟2】在對應的php文件進行文件的處理

if(!empty($_FILES['file_stu']['name']))
{$tmp_file=$_FILES['file_stu']['tmp_name'];$file_types=explode(".",$_FILES['file_stu']['name']);$file_type=$file_types[count($file_types)-1];
/*判別是不是.xls文件,判別是不是excel文件*/if(strtolower($file_type)!="xls"){$this->error('不是Excel文件,重新上傳');}
/*設置上傳路徑*/$savePath=SITE_PATH.'/public/upfile/Excel/';
/*以時間來命名上傳的文件*/$str=date('Ymdhis');$file_name=$str.".".$file_type;
/*是否上傳成功*/if(!($tmp_file,$savePath.$file_name)){$this->error('上傳失敗');}
/*

*對上傳的Excel數據進行處理生成編程數據,這個函數會在下面第三步的ExcelToArray類中

注意:這里調用執行了第三步類裡面的read函數,把Excel轉化為數組並返回給$res,再進行資料庫寫入

*/$res=Service('ExcelToArray')->read($savePath.$file_name);
/*

重要代碼 解決Thinkphp M、D方法不能調用的問題

如果在thinkphp中遇到M 、D方法失效時就加入下面一句代碼

*/

//spl_autoload_register(array('Think','autoload'));

/*對生成的數組進行資料庫的寫入*/

foreach($resas$k=>$v){if($k!=0){$data['uid']=$v[0];$data['password']=sha1('111111');$data['email']=$v[1];
$data['uname']=$v[3];
$data['institute']=$v[4];$result=M('user')->add($data);if(!$result){$this->error('導入資料庫失敗');}}}
}
【步驟3】ExcelToArrary類,用來引用phpExcel並處理Excel數據的
{
publicfunction__construct(){
/*導入phpExcel核心類注意:你的路徑跟我不一樣就不能直接復制*/include_once('./Excel/PHPExcel.php');}
/**

* 讀取excel $filename 路徑文件名 $encode 返回數據的編碼 默認為utf8

*以下基本都不要修改

*/

publicfunctionread($filename,$encode='utf-8'){
$objReader=PHPExcel_IOFactory::createReader('Excel5');
$objReader->setReadDataOnly(true);
$objPHPExcel=$objReader->load($filename);
$objWorksheet=$objPHPExcel->getActiveSheet();
$highestRow=$objWorksheet->getHighestRow();$highestColumn=$objWorksheet->getHighestColumn();$highestColumnIndex=PHPExcel_Cell::columnIndexFromString($highestColumn);$excelData=array();for($row=1;$row<=$highestRow;$row++){for($col=0;$col<$highestColumnIndex;$col++){$excelData[$row][]=(string)$objWorksheet->getCellByColumnAndRow($col,$row)->getValue();}}return$excelData;
}

}

❷ 如何用php實現將excel導入到資料庫中

把excel
改為
cvs文件
?
//連接資料庫文件
$connect=mysql_connect("localhost","admin","admin")
or
die("鏈接資料庫失敗!");
//連接資料庫(test)
mysql_select_db("testcg",$connect)
or
die
(mysql_error());
$temp=file("test.csv");//連接EXCEL文件,格式為了.csv
for
($i=0;$i
<count($temp);$i++)
{
$string=explode(",",$temp[$i]);//通過循環得到EXCEL文件中每行記錄的值
//將EXCEL文件中每行記錄的值插入到資料庫中
$q="insert
into
ceshi
(name,num,dom)
values('$string[0]','$string[1]','$string[2]');";
mysql_query($q)
or
die
(mysql_error());
if
(!mysql_error());
{
echo
"
成功導入數據!";
}
echo
$string[4]."\n";
unset($string);
}
?

❸ PHP導入EXCEL到資料庫的問題。

$_POST['file']取得的地址為伺服器臨時保存文件的地址,並不是當前php程序的目錄,因此會發生找不到文件的問題,另外如果存到了沒有訪問許可權的目錄下,會出現不能讀。

❹ thinkphp導入excel到資料庫,欄位對不上,不知道該從哪裡改,哪位能幫我看看啊。

使用PHPexcel,你自己到網上搜這個插件吧,將需要的文件解壓到Classes目錄下,那麼把這個目錄放在框架thinkphp/extend/vendor/下面,我將自己項目中的部分代碼給你看看

在ACTION中設置上傳文件並獲取文件:

import('ORG.Net.UploadFile');
$upload = new UploadFile();// 實例化上傳類
$upload->maxSize = 3145728;// 設置附件上傳大小
$upload->allowExts = array('xls');// 設置附件上傳類型
$upload->savePath = './Uploads/';// 設置附件上傳目錄
if(!$upload->upload()) {// 上傳錯誤提示錯誤信息
$this->error($upload->getErrorMsg());
}else{// 上傳成功 獲取上傳文件信息
$info = $upload->getUploadFileInfo();
}
$filetmpname = './Uploads/'.$info[0]['savename'];

下面就需要使用phpexcel來解析
Vendor('Classes.PHPExcel');
$objPHPExcel = PHPExcel_IOFactory::load($filetmpname);
$excelarray= $objPHPExcel->getSheet(0)->toArray();
unlink($filetmpname);//刪除上傳的文件
//你要注意,excel表中如果從第一行的數據開始導入,那麼直接按照下面的代碼就可以,如果有表頭之類的不需要的行,那麼就是用 array_shift先刪除數組中不需要的行
//循環給數據欄位賦值

foreach($excelarr as $k=>$v){
$data[$k]['欄位1']=$v[1];

$data[$k]['欄位2']=$v[2];
$data[$k]['欄位3']=$v[3];
$data[$k]['欄位4']=$v[4];
$data[$k]['欄位5']=$v[5];
}
上面的步驟就是獲取了表格中的數據並賦值給了數組,下面就可以直接插入到資料庫中了
$list=$charu=D('數據表名')->addAll($data);

非常簡單吧,至於數據中的類型和驗證等,自己在需要的位置設定就可以了

❺ 原生PHP代碼實現excel導入,並添加數據到資料庫.

我用的代碼是:
<?
//連接資料庫文件
$connect=mysql_connect("localhost","admin","admin") or die("鏈接資料庫失敗!");
//連接資料庫(test)
mysql_select_db("testcg",$connect) or die (mysql_error());

$temp=file("test.csv");//連接EXCEL文件,格式為了.csv
for ($i=0;$i <count($temp);$i++)
{
$string=explode(",",$temp[$i]);//通過循環得到EXCEL文件中每行記錄的值
//將EXCEL文件中每行記錄的值插入到資料庫中
$q="insert into ceshi (name,num,dom) values('$string[0]','$string[1]','$string[2]');";
mysql_query($q) or die (mysql_error());

if (!mysql_error());
{
echo " 成功導入數據!";
}
echo $string[4]."\n";
unset($string);
}
?>

--------------------------------------------------------------------------------
phpexcel或者pear的一個組件 ,國內有一個excelclass的插件
都是用來處理excel的,前2個功能都比較強大,對編碼的支持也都不錯,推薦使用pear的那個,名字好像叫spreadsheet reader

phpexcel比較費資源,不過並不是所有的excel都能讀取

樓主可以到這里去看看 pear.php.net
--------------------------------------------------------------------------------
頂樓上的回答~~順便接個分!嘿嘿
--------------------------------------------------------------------------------
AdO直接上傳

注意有些字元mysql或ADO可能不支持
--------------------------------------------------------------------------------
首先確認你的資料庫是什麼編碼的,以utf-8為例,
你首先打開excel 文件,然後保存,選擇為另存為.csv文件。
然後用文本編輯器打開.csv文件,另存為utf-8的csv
然後你寫php 可以使用php 的getcsv 打開(這樣確保你有的欄位中含有,而導致解析錯誤),然後把解析的結果導入到資料庫中。
然後完了。

❻ 如何通過PHP將excel的數據導入MySQL中

准備工作: 下載PHP-ExcelReader,下載後用到\phpExcelReader\Excel目錄下的oleread.inc和reader.php兩個文件,並將reader.php文件打開後require_once 'Spreadsheet/Excel/Reader/OLERead.php';屏蔽掉,增加為require_once 'oleread.inc'; 然後直接將這兩個文件復制到伺服器下WAMP,直接復制到WWW目錄下,再將所需要的excel文件考進來我的文件是classify.xls,然後需要一個調用reader.php的文件,源代碼如下:
ExcelToMysql.php
<?php
require_once 'reader.php';
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('gbk');
$data->read('classify.xls'); //」classify.xls」是指要導入到mysql中的excel文件
@ $db = mysql_connect("localhost", "root", "") or
die("Could not connect to database.");//連接資料庫
mysql_query("set names 'gbk'");//輸出中文
mysql_select_db('japlearn'); //選擇資料庫
error_reporting(E_ALL ^ E_NOTICE);

for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {
//以下注釋的for循環列印excel表數據

//以下代碼是將excel表數據【6個欄位】插入到mysql中,根據你的excel表欄位的多少,改寫以下代碼吧!
$sql = "INSERT INTO classify VALUES('".
$data->sheets[0]['cells'][$i][1]."','".
$data->sheets[0]['cells'][$i][2]."','".
$data->sheets[0]['cells'][$i][3]."','".
$data->sheets[0]['cells'][$i][4]."','".$data->sheets[0]['cells'][$i][5]."','".$data->sheets[0]['cells'][$i][6]."')";

echo $sql.'<br />';
$res = mysql_query($sql);
}

?>
把上面代碼注釋的地方替換成自己配置好的數據,如資料庫配置等。運行本機測試地址實現導入。

❼ PHP 用PHPExcel往資料庫導入大量數據

1、首先我們准備一個含有數據的Excel表格,表頭和數據表中的表欄位相對應。

❽ 導入excel文件,後端php處理導入的數據並存入資料庫,需要前後端結合的demo!

thinkphp3.2和phpexcel導入最基本用法
先整個最基礎的代碼,理解了這個,後面的就非常簡單了

$file_name='./Upload/excel/123456.xls';
import("Org.Util.PHPExcel");
import("Org.Util.PHPExcel.IOFactory");
$objReader=PHPExcel_IOFactory::createReader('Excel5');
$objPHPExcel=$objReader->load($file_name,$encode='utf-8');
$sheet=$objPHPExcel->getSheet(0);
$highestRow=$sheet->getHighestRow();//取得總行數
$highestColumn=$sheet->getHighestColumn();//取得總列數

$s=$objPHPExcel->getActiveSheet()->getCell("A2")->getValue();

表格內容:

publicfunctionupload(){
$files=$_FILES['exl'];


//exl格式,否則重新上傳
if($files['type']!='application/vnd.ms-excel'){
$this->error('不是Excel文件,請重新上傳');
}

//上傳
$upload=newThinkUpload();//實例化上傳類
$upload->maxSize=3145728;//設置附件上傳大小
$upload->exts=array('xls');//設置附件上傳類型
$upload->rootPath='./Upload/';//設置附件上傳根目錄
$upload->savePath='excel/';//設置附件上傳(子)目錄
//$upload->subName=array('date','Ym');
$upload->subName='';
//上傳文件
$info=$upload->upload();

$file_name=$upload->rootPath.$info['exl']['savepath'].$info['exl']['savename'];
$exl=$this->import_exl($file_name);

//去掉第exl表格中第一行
unset($exl[0]);

//清理空數組
foreach($exlas$k=>$v){
if(empty($v)){
unset($exl[$k]);
}
};
//重新排序
sort($exl);

$count=count($exl);
//檢測表格導入成功後,是否有數據生成
if($count<1){
$this->error('未檢測到有效數據');
}

//開始組合數據
foreach($exlas$k=>$v){

$goods[$k]['goods_sn']=$v;

//查詢資料庫
$where['goods_sn']=array('like','%'.$v.'%');
$res=M('goods')->where($where)->find();

$goods[$k]['goods_name']=$res['goods_name'];
$goods[$k]['goods_thumb']=$res['goods_thumb'];
if($res){
//是否匹配成功
$goods[$k]['is_match']='1';
$f+=1;
}else{
//匹配失敗
$goods[$k]['is_match']='0';
$w+=1;
}

}
//實例化數據
$this->assign('goods',$goods);
//print_r($f);

//統計結果
$total['count']=$count;
$total['success']=$f;
$total['error']=$w;
$this->assign('total',$total);

//刪除Excel文件
unlink($file_name);
$this->display('info');

}
/*處理上傳exl數據
*$file_name文件路徑
*/
publicfunctionimport_exl($file_name){
//$file_name='./Upload/excel/123456.xls';
import("Org.Util.PHPExcel");//這里不能漏掉
import("Org.Util.PHPExcel.IOFactory");
$objReader=PHPExcel_IOFactory::createReader('Excel5');
$objPHPExcel=$objReader->load($file_name,$encode='utf-8');
$sheet=$objPHPExcel->getSheet(0);
$highestRow=$sheet->getHighestRow();//取得總行數
$highestColumn=$sheet->getHighestColumn();//取得總列數

for($i=1;$i<$highestRow+1;$i++){
$data[]=$objPHPExcel->getActiveSheet()->getCell('A'.$i)->getValue();
}
return$data;
}

有問題一定要及時弄清楚