本文目錄一覽:
thinkphp3.1中的phpexcel導入怎麼用
首先,去PHPExcel官方網站下載PHPExcel,官方地址為;.我下的是1.8.0版本的.解壓後發現還是蠻大的,有十幾M,不知道其他版本是不是會小點.
這裡寫圖片描述
把解壓好的PHPExcel文件放在ThinkPHP的Vender文件夾下(專門放第三方類庫的),如下圖
這裡寫圖片描述
其次,創建Excel轉換數組類,並把它放在ThinkPHP\Extend\Library\ORG\Util目錄下
class ExcelToArrary {
public function __construct() {
Vendor(“PHPExcel.Classes.PHPExcel”);//引入phpexcel類(留意路徑,不了解路徑可以查看下手冊)
Vendor(“PHPExcel.Classes.PHPExcel.IOFactory”); //引入phpexcel類(留意路徑)
}
public function read($filename,$encode,$file_type){
if(strtolower ( $file_type )==’xls’)//判斷excel表類型為2003還是2007
{
Vendor(“PHPExcel.Classes.PHPExcel.Reader.Excel5”); //引入phpexcel類(留意路徑)
$objReader = PHPExcel_IOFactory::createReader(‘Excel5’);
}elseif(strtolower ( $file_type )==’xlsx’)
{
Vendor(“PHPExcel.Classes.PHPExcel.Reader.Excel2007”);//引入phpexcel類(留意路徑)
$objReader = PHPExcel_IOFactory::createReader(‘Excel2007’);
}
$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;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
如右圖這裡寫圖片描述
現在來說Excel,表格的結構樣式和MySQL樣式要類似,表格樣式如下(本人對Excel使用只是一般,所以如果有Excel大神做的報表,不知後果如何).
這裡寫圖片描述
前端頁面相關代碼:
div
form method=”post” action=”{:U(‘Index/upload’)}” enctype=”multipart/form-data”
font導入Excel數據:/font
label for=”file_stu”上傳/label
input name=”file_stu” type=”file” id=”file_stu” /
h3溫馨提示:/h3
p請確認您的Excel表格類型是xls的,以免出現兼容問題./p
inputtypeinputtype=”submit” class=”sure” value=”導入” /
/form
/div
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
最後,控制器部分使用了Thinkphp自帶的上傳類,使用unlink()函數是為了刪除上傳的excel表格,以免文件夾存入過多文件,調試代碼時可先注釋掉.或者不寫也行,把刪除文件的工作交給你們的運維.代碼中foreach循環部分$v[]里的0, 1,2可以改動以下看看與Excel表格里的內容是什麼關係.可以把數組打印出來看一看,你就很清楚了
相關代碼:
public function upload(){
import(‘ORG.Util.ExcelToArrary’);//導入excelToArray類
if (! empty ( $_FILES [‘file_stu’] [‘name’] )){
import(‘ORG.Net.UploadFile’);
$upload = new UploadFile();// 實例化上傳類
$upload-maxSize = 3145728 ;// 設置附件上傳大小
$upload-allowExts = array(‘xls’, ‘xlsx’);// 設置附件上傳類型
$upload-savePath = ‘./Uploads/’;// 設置附件上傳目錄
if(!$upload-upload()) {// 上傳錯誤提示錯誤信息
$this-error($upload-getErrorMsg());
}else{// 上傳成功 獲取上傳文件信息
$info = $upload-getUploadFileInfo();
}
}else{
$this-error(‘(⊙o⊙)~沒傳數據就導入?!你在逗我?!’);
}
//dump($info);die;
$ExcelToArrary=new ExcelToArrary();//實例化
$res=$ExcelToArrary-read($info[0][‘savepath’].$info[0][‘savename’],”UTF-8″,$info[0][‘extension’]);//傳參,判斷office2007還是office2003
$res = array_slice($res,1); //為了去掉Excel里的表頭,也就是$res數組裡的$res[0];
//dump($res);
foreach ( $res as $k = $v ){ //循環excel表
$data[$k][‘mobile’] = $v [0];//創建二維數組
$data[$k][‘name’] = $v [1];
$data[$k][‘duty’] = $v [2];
}
//dump($data);die;
$result=M(‘appkey’)-addAll($data);
if(!$result){
$this-error(‘導入數據庫失敗’);
exit();
}else{
$filename = ‘./Uploads/’.$info[0][‘savename’];//上傳文件絕對路徑,unlink()刪除文件函數
if (unlink($filename)) {
$this-success ( ‘導入成功’ );
}else{
$this-error(‘緩存刪除失敗’);
}
}
}
求PHP 讀取xlsx 導入mysql代碼
?php
header(“content-Type:
text/html;
charset=
utf8
“);
error_reporting(0);
$
connection
=
mysql_connect(‘
localhost
‘,
‘root’,
‘password’);
// 連接數據庫
mysql_select_db
(‘test’);
//
選擇數據庫
mysql_query(“SET
NAMES
‘utf8′”);
//
設置
字符集
//
連接EXCEL
$conn=new
com(“adodb.connection”,
NULL,
CP_UTF8);
$connstr=”Driver={Microsoft
Excel
Driver
(*.xls)};DBQ=”.realpath(“excel.xls”);
$conn-open($connstr);
$sql=”select
*
from
[Sheet1$]”;
//
查詢EXCEL工作表
$rs=$conn-execute($sql);
while(!$rs-eof)
{
$id =
trim($rs-fields(id)-value);
//
將excel中Sheet1表中的id存到$id;
$name =
trim($rs-fields(name)-value);
//
將excel中Sheet1表中的name存到$name;
$sex
=
trim($rs-fields(sex)-value);
//
將excel中Sheet1表中的sex存到$sex;
// 生成SQL
INSERT語句
$sql
=
“INSERT
INTO
test(id,
name,
sex)
VALUES(‘$id’,
‘$name’,
‘$sex’)”;
//
插入數據庫
mysql_query($sql);
$rs-movenext;
}
mysql_close
($connection);
?
thinkphp 怎麼把數據庫導入excel
本文實例講述了thinkPHP實現將excel導入到數據庫中的方法。分享給大家供大家參考,具體如下:PHPExcel插件可點擊此處本站下載。這裡使用的是thinkphp框架的3.1版本,下載好壓縮包,框架中的extend中的vendor文件夾中新建一個名為PHPExcel的文件夾,把classes裡面的內容放到裡面下面是前端頁面提示:我在測試的時候遇到報錯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=”導入”/ /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(); // 取得總行數 $highestColumn = $sheet-getHighestColumn(); // 取得總列數 for($i=2;$i=$highestRow;$i++)//這個地方根據需要,一般第一行是名稱,所以從第二行開始循環,也可以從第一行開始 { $data[‘lianjieid’] = $objPHPExcel-getActiveSheet()-getCell(“A”.$i)-getValue();//數據庫字段和excel列相對應 $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);//插入數據庫 } $this-success(‘導入成功!’); }else { $this-error(“請選擇上傳的文件”); } } 更多關於thinkPHP相關內容感興趣的讀者可查看本站專題:《ThinkPHP入門教程》、《ThinkPHP常用方法總結》、《smarty模板入門基礎教程》及《PHP模板技術總結》。希望本文所述對大家基於ThinkPHP框架的PHP程序設計有所幫助。
原創文章,作者:PNVDG,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/324852.html