導航:首頁 > 編程語言 > php導入excel

php導入excel

發布時間:2022-01-18 02:23:50

❶ 導入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;
}

有問題一定要及時弄清楚

❷ php如何批量導入excel表格文件

$data=newSpreadsheet_Excel_Reader();//實例化
02$data->setOutputEncoding('utf-8');//設置讀取編碼
03$data->read($p);//$p就是excel文件路徑
04
05for($i=2;$i<=$data->sheets[0]['numRows'];$i++){
06//傳如數組,將一行信息寫入資料庫;
07$arr=$data->sheets[0]['cells'][$i];
08if($arr){
09$r=addUserLine($arr,$posts['bid']);
10if($r){
11echo"樓棟:".$r['bldgname']."房間:".$r['roomname']."學員:".$r['name']."學號:".$r['sid']."導入成功<br/><hr/>";
12}else{
13echo"<br/><hr/>";
14}
15}
16}

❸ php怎麼導入大量數據的excel

php導出大量數據的Excel:
PHP從資料庫分多次讀取100萬行記錄,和分多次將100萬行寫入文本文件都沒問題
Excel可以支持100萬行記錄,Excel 2003最大支持65536行,從2007版開始支持104萬行了,目前2007的盜版應該比較普及了-_-! 問清楚客戶是什麼版本。
要導出excel的理由是非常充分和正確的,應該繼續堅持。業務人員最熟悉的就是Excel,實在不熟悉現學現用也比別的快。只是要注意,當數據量達到10萬行這個級別時,Excel的公式填充將會非常非常慢,如果再有LOOKUP()公式,基本上十分鍾內處理CPU滿載進程管理器殺不掉的狀態,這時候其實xampp + phpmyadmin是一個易用性和性能都最平衡的選擇
PHPExcel輸出的是Excel XML格式,有個XML頭和尾,中間是數據Body,需要將100萬行都賦值給一個數組才可以調用PHPExcel->write(),這容易導致PHP執行超時或者內存超限,不妨調整一下php.ini配置,把超時時間和內存限制都改到很大
如果是輸出csv格式,那就太簡單了,你的問題可能是沒給欄位內容加引號,加上引號再調用fputcsv試試?其實fputcsv做的事情特別簡單,你甚至可以不管它,自己把CSV文件的每一行拼接好了之後用file_put_contents寫入

❹ php如何實現上傳導入excel數據

難道你導入的時候不是選擇的本地 文件嗎?input框獲取之後 提交過去就可以導入了啊 phpexcel中有例子的啊 可以看看簡單的嘛 基本上 按那個例子改點東西就可以用了啊

❺ PHP如何導入導出Excel

最近在PHP培訓學習過程中,需要開發一個模塊,把系統中的一些數據導出成Excel,修改後再導回系統。就趁機對這個研究了一番,下面進行一些總結。雖然我們在平時用的也有一些,但沒有作者列出來的全,寫excel的時候,我用過pear的庫,也用過pack壓包的頭,同樣那些利用smarty等作的簡單替換xml的也用過,csv的就更不用談了。但是在讀的時候,只用過一種,具體是什麼忘了,要回去翻代碼了。
基本上導出的文件分為兩種:
1:類Excel格式,這個其實不是傳統意義上的Excel文件,只是因為Excel的兼容能力強,能夠正確打開而已。修改這種文件後再保存,通常會提示你是否要轉換成Excel文件。優點:簡單。缺點:難以生成格式,如果用來導入需要自己分別編寫相應的程序。2:Excel格式,與類Excel相對應,這種方法生成的文件更接近於真正的Excel格式。
如果導出中文時出現亂碼,可以嘗試將字元串轉換成gb2312,例如下面就把$yourStr從utf-8轉換成了gb2312:$yourStr = mb_convert_encoding(」gb2312″, 「UTF-8″, $yourStr);
下面詳細列舉幾種方法。
1:利用smarty,生成符合Excel規范的XML或HTML文件支持格式,非常完美的導出方案。不過導出來的的本質上還是XML文件,如果用來導入就需要另外處理了。詳細內容請見rardge大俠的帖子:http://bbs.chinaunix.net/viewthread.php?tid=745757
需要注意的是如果導出的表格行數不確定時,最好在模板中把」ss:ExpandedColumnCount=」5″ ss:ExpandedRowCount=」21″」之類的東西刪掉。

2、利用pack函數列印出模擬Excel格式的斷句符號,這種更接近於Excel標准格式,用office2003修改後保存,還不會彈出提示,推薦用這種方法。缺點是無格式。
PHP代碼<?php // Send Header header(」Pragma: public」); header(」Expires: 0″); header(」Cache-Control: must-revalidate, post-check=0, pre-check=0″); header(」Content-Type: application/force-download」); header(」Content-Type: application/octet-stream」); header(」Content-Type: application/download」);; header(」Content-Disposition: attachment;filename=test.xls 「); header(」Content-Transfer-Encoding: binary 「); // XLS Data Cell xlsBOF(); xlsWriteLabel(1,0,」My excel line one」); xlsWriteLabel(2,0,」My excel line two : 「); xlsWriteLabel(2,1,」Hello everybody」); xlsEOF(); function xlsBOF() { echo pack(」ssssss」, 0×809, 0×8, 0×0, 0×10, 0×0, 0×0); return; } function xlsEOF() { echo pack(」ss」, 0×0A, 0×00); return; } function xlsWriteNumber($Row, $Col, $Value) { echo pack(」sssss」, 0×203, 14, $Row, $Col, 0×0); echo pack(」d」, $Value); return; } function xlsWriteLabel($Row, $Col, $Value ) { $L = strlen($Value); echo pack(」ssssss」, 0×204, 8 + $L, $Row, $Col, 0×0, $L); echo $Value; return; } ?> 不過筆者在64位linux系統中使用時失敗了,斷句符號全部變成了亂碼。
3、使用製表符、換行符的方法 製表符」\t」用戶分割同一行中的列,換行符」\t\n」可以開啟下一行。 <?php header(」Content-Type: application/vnd.ms-execl」); header(」Content-Disposition: attachment; filename=myExcel.xls」); header(」Pragma: no-cache」); header(」Expires: 0″); /*first line*/ echo 「hello」.」\t」; echo 「world」.」\t」; echo 「\t\n」; /*start of second line*/ echo 「this is second line」.」\t」; echo 「Hi,pretty girl」.」\t」; echo 「\t\n」;

❻ 怎麼使用php把表格中的數據導入到excel中

下面是我寫的一個PHP導出數據到CSV問價的函數,你到時候直接調用就行了

/**
*導出CSV文件
*@paramstring$fileName 文件名字
*@paramstring|array$data導出數據,csv格式的字元串|數值數組
*@paramstring$to_encoding目標轉換編碼
*@paramstring$from_encoding當前編碼
*/
functionexportCSV($fileName='',$data='',$to_encoding='gb2312',$from_encoding='utf-8'){
$fileName=empty($fileName)?date('YmdHis'):$fileName;
//文件標簽
Header("Content-type:application/octet-stream");
header("Content-type:application/vnd.ms-excel;charset=$from_encoding");
Header("Content-Disposition:attachment;filename=$fileName.csv");

$str='';
if($data){
if(is_array($data)){
foreach($dataas$v){
if(is_array($v)){
foreach($vas$vo){
$str.=(is_numeric($vo)?"'".$vo:$vo."").",";
}
$str=trim($str,",")." ";
}else{
$str.=(is_numeric($v)?"'".$v:$v).",";
}
}
$str=trim($str,",")." ";
}else{
$str=$data;
}
}

echomb_convert_encoding($str,"gb2312","utf-8");
exit;
}

❼ PHP網頁怎麼導入Excel的數據

參考代碼如下:
<?php
// 1.引用ExcelReader類文件
require_once 'Excel/reader.php';
// 2.實例化讀取Excel的類
$data = new Spreadsheet_Excel_Reader();
// 3.設置輸出編碼
$data->setOutputEncoding('utf-8');
// 4.讀取指定的excel
$data->read('test.xls');

// 5.循環輸出每一行數據,這里讀取的是Excel的第一個Sheet表格
// sheets[0]['numRows']代錶行數
// sheets[0]['numCols']代表列數
for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) { // 遍歷行
for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) { // 遍歷列
echo "\"".$data->sheets[0]['cells'][$i][$j]."\",";
}
echo "\n";
}

?>

❽ 原生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

第一,在前台html頁面進行上傳文件:如:
復制代碼代碼如下:

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

第二,在對應的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 ( $res as $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 ( '導入資料庫失敗' );
}
}
}
}

第三:ExcelToArrary類,用來引用phpExcel並處理Excel數據的
復制代碼代碼如下:

class ExcelToArrary extends Service{
public function __construct() {
/*導入phpExcel核心類 注意:你的路徑跟我不一樣就不能直接復制*/
include_once('./Excel/PHPExcel.php');
}
/**
* 讀取excel $filename 路徑文件名$encode 返回數據的編碼默認為utf8
*以下基本都不要修改
*/
public function read($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表格到資料庫,根據表格內的欄位修改對應數據,請問大神怎麼導入資料庫

這種直接使用資料庫管理工具導入。

閱讀全文

與php導入excel相關的資料

熱點內容
怎樣把圖片分別放置在文件夾中 瀏覽:871
推流伺服器地址是什麼 瀏覽:630
java允許多重繼承 瀏覽:511
解壓小玩具好玩又可愛 瀏覽:408
騰訊雲大帶寬伺服器 瀏覽:821
加密鎖的售後 瀏覽:268
linux登不上去 瀏覽:729
聯想伺服器休眠後如何喚醒 瀏覽:111
四川話女孩學習編程 瀏覽:322
編譯原理文法區分 瀏覽:1001
教師可以做程序員嘛 瀏覽:637
終結戰場安卓國際服怎麼下載 瀏覽:155
現在的高端伺服器屬於什麼 瀏覽:810
企業銀行解壓流程 瀏覽:447
用app壓縮文件 瀏覽:227
柱子正負零加密區 瀏覽:322
車輛貸款交完要去4s店解壓 瀏覽:65
電腦可以運行plc編程嗎 瀏覽:594
下載app的怎麼連不上 瀏覽:765
程序員做量化交易有前途么 瀏覽:233