本文目錄一覽:
- 1、thinkphp3.1中的phpexcel導入怎麼用
- 2、用php如何寫導出excel代碼?
- 3、phpexcel 支持什麼版本的 excel
- 4、原生PHP代碼實現excel導入,並添加數據到資料庫.
- 5、phpexcel 讀取excel load方法卡死過不去 代碼如下
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如何寫導出excel代碼?
用PHPExcel,PHPExcel是相當強大的 MS Office Excel 文檔生成類庫。
你上它的官/網把程序包下/載下來,裡面有 PHPExcel 的程序、還有30個實常式序和三個文檔。
看一下其中的開發文檔你就會用了。
讀取(這段在開發文檔里有的,在13頁):
require_once ‘../Classes/PHPExcel/IOFactory.php’;
$objReader = PHPExcel_IOFactory::createReader(‘Excel2007’);
$objReader-setReadDataOnly(true);
$objPHPExcel = $objReader-load(“test.xlsx”);
$objWorksheet = $objPHPExcel-getActiveSheet();
echo ‘table’ . “\n”;
foreach ($objWorksheet-getRowIterator() as $row) {
echo ‘tr’ . “\n”;
$cellIterator = $row-getCellIterator();
$cellIterator-setIterateOnlyExistingCells(false);
foreach ($cellIterator as $cell) {
echo ‘td’ . $cell-getValue() . ‘/td’ . “\n”;
}
echo ‘/tr’ . “\n”;
}
echo ‘/table’ . “\n”;
?
phpexcel 支持什麼版本的 excel
phpexcel 支持生成Excel(.xls)、Excel2007(.xlsx)文檔,此外還支持PDF、HTML、CSV文檔的生成。此外,PHPExcel還支持以現有的Excel文檔為模板填充數據生成新的以上文檔。並且,其本身的API文檔和示例demo相當完整,非常有助於開發人員使用。
當前的版本是1.7.6,下載解壓後的PHPExcel的目錄結構如下所示:
其中:
Classes目錄下是PHPExcel的源代碼文件:PHPExcel.php文件是類庫的介面,外部的PHP代碼通過它來實現對PHPExcel的調用;PHPExcel目錄下是各種不同文檔(如Excel、Excel2007、PDF等)的讀取和生成的具體操作代碼,它們由Classes目錄下的PHPExcel.php文件通過工廠模式統一進行調用。
Documentation目錄下是PHPExcel的官方幫助文檔,尤其是API目錄下網頁文件全部是PHPExcel的API幫助文檔,而其它的則是對這個開源項目的介紹。
Tests目錄下是PHPExcel的將近40個示例小程序,可以與Classes目錄一同放到Apache+PHP環境下進行測試與學習。
原生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 打開(這樣確保你有的欄位中含有,而導致解析錯誤),然後把解析的結果導入到資料庫中。
然後完了。
phpexcel 讀取excel load方法卡死過不去 代碼如下
PHP讀EXECL不要用ODBC,直接用一個類就可以了phpExcelReader這個類是老外一直在開發的類,裡面涵蓋了幾乎所有EXECL的讀取和寫入功能,甚至圖片和批註都可以讀,我覺得這個類可以滿足你所有PHP關於EXECL的讀寫工作完成任務就要用做好的方法,一直用一種自己會但不是最好法總歸不是好程序員所為,加油吧。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/198585.html