thinkPHP實現(xiàn)將excel導(dǎo)入到數(shù)據(jù)庫中的方法體如下:
成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供沙灣企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站設(shè)計制作、成都網(wǎng)站建設(shè)、H5場景定制、小程序制作等業(yè)務(wù)。10年已為沙灣眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。
PHPExcel插件可點擊此處本站下載。
這里使用的是thinkphp框架的3.1版本,下載好壓縮包,框架中的extend中的vendor文件夾中新建一個名為PHPExcel的文件夾,把classes里面的內(nèi)容放到里面
下面是前端頁面
提示:我在測試的時候遇到報錯exception 'PHPExcel_Reader_Exception' with message 'The filename
原因是由于excel的文件后綴可能不同,我的文件后綴是xlsx,然后給把他另存為了xls的文件,就可以了
html
head
/head
body
form action="{pigcms::U('Jdb/abcdefgwulisuibian')}" method="post" enctype="multipart/form-data"
input type="file" name="import"/
input type="hidden" name="table" value="tablename"/
input type="submit" value="導(dǎo)入"/
/form
/body
/html
下面是php的
function abcdefgwulisuibianuplod(){
$this-display();//顯示頁面
}
function abcdefgwulisuibian(){
if (!empty($_FILES)) {
import("@.ORG.UploadFile");
$config=array(
'allowExts'=array('xlsx','xls'),
'savePath'='./Public/upload/',
'saveRule'='time',
);
$upload = new UploadFile($config);
if (!$upload-upload()) {
$this-error($upload-getErrorMsg());
} else {
$info = $upload-getUploadFileInfo();
}
vendor("PHPExcel.PHPExcel");
$file_name=$info[0]['savepath'].$info[0]['savename'];
$objReader = PHPExcel_IOFactory::createReader('Excel5');
$objPHPExcel = $objReader-load($file_name,$encode='utf-8');
$sheet = $objPHPExcel-getSheet(0);
$highestRow = $sheet-getHighestRow(); // 取得總行數(shù)
$highestColumn = $sheet-getHighestColumn(); // 取得總列數(shù)
for($i=2;$i=$highestRow;$i++)//這個地方根據(jù)需要,一般第一行是名稱,所以從第二行開始循環(huán),也可以從第一行開始
{
$data['lianjieid'] = $objPHPExcel-getActiveSheet()-getCell("A".$i)-getValue();//數(shù)據(jù)庫字段和excel列相對應(yīng)
$data['yaoqingma'] = $objPHPExcel-getActiveSheet()-getCell("B".$i)-getValue();
$data['dlmima']= $objPHPExcel-getActiveSheet()-getCell("C".$i)-getValue();
$data['ljdizhi']= $objPHPExcel-getActiveSheet()-getCell("D".$i)-getValue();
M('jdb')-add($data);//插入數(shù)據(jù)庫
}
$this-success('導(dǎo)入成功!');
}else
{
$this-error("請選擇上傳的文件");
}
}
把excel
改為
cvs文件
?
//連接數(shù)據(jù)庫文件
$connect=mysql_connect("localhost","admin","admin")
or
die("鏈接數(shù)據(jù)庫失??!");
//連接數(shù)據(jù)庫(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]);//通過循環(huán)得到EXCEL文件中每行記錄的值
//將EXCEL文件中每行記錄的值插入到數(shù)據(jù)庫中
$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
"
成功導(dǎo)入數(shù)據(jù)!";
}
echo
$string[4]."\n";
unset($string);
}
?
需要PHP基礎(chǔ)知識和數(shù)據(jù)庫基礎(chǔ)知識。
以SQL為例。使用PHP MySQL 函數(shù)可以編輯數(shù)據(jù)庫。
mysql_connect() 函數(shù)打開MySQL 連接。舉例
?php
$con = mysql_connect("localhost","mysql_user","mysql_pwd");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}// 一些代碼...mysql_close($con);
?
mysql_connect()三個參數(shù)分別是服務(wù)器名,連接賬號,連接密碼。
連接之后,可以使用mysql_select_db()設(shè)置要處理的數(shù)據(jù)庫,后面則是用數(shù)據(jù)庫語句處理數(shù)據(jù)。SQL語法簡介網(wǎng)頁鏈接
首先你要建立一個表,例如是注冊的用戶表user
,里面的結(jié)構(gòu)有字段
id,
name,nickname,email等。
然后在你的表單處form
action="a.php"
method="post"
name="regform"(如果有圖片上傳,還要加上enctype="multipart/form-data")
,那么點擊表單提交按紐后,此表單將會交給處理頁a.php來作處理。
如果簡單點,你就直接可以將表單傳遞過來的數(shù)據(jù)$_POST,直接用sql插入語句,insert
into來插入到數(shù)據(jù)庫,表user中。例如insert
into
user
set
name='".$_POST['name']."'.............................
這個技術(shù)稍微綜合了PHP的基礎(chǔ)知識,
給你一個思路,
(1) 先將textarea 文本中的信息 傳入 php的 $_POST['content'], content 是textarea的屬性名稱,
(2) 傳過來的值是通過數(shù)組的形式進(jìn)行保存的 ,其中PHP有一個函數(shù)是可以將數(shù)組轉(zhuǎn)換成字符串形式,
引用那個函數(shù)后,通過var_dump()打印出你的轉(zhuǎn)換數(shù)據(jù),看是否是字符串
在這里需要提醒你一下,因為你是每一行作為一句話 通過逗號分隔出來的 ,那么 在轉(zhuǎn)換成數(shù)組的時候,
將每一行數(shù)據(jù) 用 | 隔開,例如:
數(shù)據(jù)1 , 數(shù)據(jù)11, 數(shù)據(jù)111 | 數(shù)據(jù)2, 數(shù)據(jù)22, 數(shù)據(jù)222| 數(shù)據(jù)3 , 數(shù)據(jù)33, 數(shù)據(jù)333 | 數(shù)據(jù)4, 數(shù)據(jù)44, 數(shù)據(jù)444 |
這就是一個轉(zhuǎn)換成字符串的格式了,
(3) 通過轉(zhuǎn)換成字符串后,php中還有一個函數(shù)就是將字符串轉(zhuǎn)換成 數(shù)組的函數(shù),轉(zhuǎn)換結(jié)果應(yīng)該出來的數(shù)據(jù)格式是:
array=
array(0)=array{
'數(shù)據(jù)1,數(shù)據(jù)11,數(shù)據(jù)111'
},
array(1)=array{
'數(shù)據(jù)2,數(shù)據(jù)22,數(shù)據(jù)222'
}....
(4)以上的數(shù)據(jù)都是索引數(shù)組的二維數(shù)組,將二維數(shù)組用foreach()去循環(huán)打印出來,那么久可以得到每一個 所以數(shù)組下的 數(shù)據(jù)了,這些數(shù)據(jù)
就是你要保存到數(shù)據(jù)的數(shù)據(jù),在按照(1)和(2)的方式進(jìn)行操作,最后就可以把textarea的數(shù)據(jù)保存到數(shù)據(jù)庫中咯。
思路就是這樣的 ,希望你能自己動手,把這個程序解決,這個程序在實際開發(fā)中運用的很廣泛,最好自己把它掌握了.....
看你的表格,只需要從表單中循環(huán)取出所有行,然后依次寫入數(shù)據(jù)庫就行了
假設(shè)表單中是:txt1[] txt2[]......
通過$a=$_POST["txt1[]"]取得值,然后循環(huán)寫入:
for($t=0;$t=count($a)-1;$t++){
// insert into 表 (字段1,......) values ('$a[$t]',.....)
}
至于打印,在JS中直接windows.print就行了