excel導出php
⑴ 如何利用Thinkphp框架實現Excel數據導入和導出
實現步驟:
一:在http://phpexcel.codeplex.com/下載最新PHPExcel放到Vendor下,注意位置:ThinkPHP\Extend\Vendor\PHPExcel\PHPExcel.php。
二:導出excel代碼實現
/**方法**/
function index(){
$this->display();
}
public function exportExcel($expTitle,$expCellName,$expTableData){
$xlsTitle = iconv('utf-8', 'gb2312', $expTitle);//文件名稱
$fileName = $_SESSION['account'].date('_YmdHis');//or $xlsTitle 文件名稱可根據自己情況設定
$cellNum = count($expCellName);
$dataNum = count($expTableData);
vendor("PHPExcel.PHPExcel");
$objPHPExcel = new PHPExcel();
$cellName = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ');
$objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1');//合並單元格
// $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $expTitle.' Export time:'.date('Y-m-d H:i:s'));
for($i=0;$i<$cellNum;$i++){
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'2', $expCellName[$i][1]);
}
// Miscellaneous glyphs, UTF-8
for($i=0;$i<$dataNum;$i++){
for($j=0;$j<$cellNum;$j++){
$objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+3), $expTableData[$i][$expCellName[$j][0]]);
}
}
header('pragma:public');
header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$xlsTitle.'.xls"');
header("Content-Disposition:attachment;filename=$fileName.xls");//attachment新窗口列印inline本窗口列印
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
exit;
}
/**
*
* 導出Excel
*/
function expUser(){//導出Excel
$xlsName = "User";
$xlsCell = array(
array('id','賬號序列'),
array('truename','名字'),
array('sex','性別'),
array('res_id','院系'),
array('sp_id','專業'),
array('class','班級'),
array('year','畢業時間'),
array('city','所在地'),
array('company','單位'),
array('cheng','職稱'),
array('wu','職務'),
array('jibie','級別'),
array('tel','電話'),
array('qq','qq'),
array('email','郵箱'),
array('honor','榮譽'),
array('remark','備注')
);
$xlsModel = M('Member');
$xlsData = $xlsModel->Field('id,truename,sex,res_id,sp_id,class,year,city,company,cheng,wu,jibie,tel,qq,email,honor,remark')->select();
foreach ($xlsData as $k => $v)
{
$xlsData[$k]['sex']=$v['sex']==1?'男':'女';
}
$this->exportExcel($xlsName,$xlsCell,$xlsData);
}
復制代碼
第三:導入excel數據代碼
function impUser(){
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=3;$i<=$highestRow;$i++)
{
$data['account']= $data['truename'] = $objPHPExcel->getActiveSheet()->getCell("B".$i)->getValue();
$sex = $objPHPExcel->getActiveSheet()->getCell("C".$i)->getValue();
// $data['res_id'] = $objPHPExcel->getActiveSheet()->getCell("D".$i)->getValue();
$data['class'] = $objPHPExcel->getActiveSheet()->getCell("E".$i)->getValue();
$data['year'] = $objPHPExcel->getActiveSheet()->getCell("F".$i)->getValue();
$data['city']= $objPHPExcel->getActiveSheet()->getCell("G".$i)->getValue();
$data['company']= $objPHPExcel->getActiveSheet()->getCell("H".$i)->getValue();
$data['cheng']= $objPHPExcel->getActiveSheet()->getCell("I".$i)->getValue();
$data['wu']= $objPHPExcel->getActiveSheet()->getCell("J".$i)->getValue();
$data['jibie']= $objPHPExcel->getActiveSheet()->getCell("K".$i)->getValue();
$data['honor']= $objPHPExcel->getActiveSheet()->getCell("L".$i)->getValue();
$data['tel']= $objPHPExcel->getActiveSheet()->getCell("M".$i)->getValue();
$data['qq']= $objPHPExcel->getActiveSheet()->getCell("N".$i)->getValue();
$data['email']= $objPHPExcel->getActiveSheet()->getCell("O".$i)->getValue();
$data['remark']= $objPHPExcel->getActiveSheet()->getCell("P".$i)->getValue();
$data['sex']=$sex=='男'?1:0;
$data['res_id'] =1;
$data['last_login_time']=0;
$data['create_time']=$data['last_login_ip']=$_SERVER['REMOTE_ADDR'];
$data['login_count']=0;
$data['join']=0;
$data['avatar']='';
$data['password']=md5('123456');
M('Member')->add($data);
}
$this->success('導入成功!');
}else
{
$this->error("請選擇上傳的文件");
}
}
復制代碼
四、模板代碼
<html>
<head>
</head>
<body>
<P><a href="{:U('Index/expUser')}" >導出數據並生成excel</a></P><br/>
<form action="{:U('Index/impUser')}" 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 導出excel
不知道你那邊什麼情況,貼段我的導出代碼,你參考吧
$objPHPExcel=newPHPExcel();
//獲取學校列表
$schools=$this->excelio->getSchoolList();
//處理Excel里的數據,橫著取數據
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1','學校id')
->setCellValue('B1','學校名稱')
->setCellValue('C1','學校類型')
->setCellValue('D1','市')
->setCellValue('E1','區');
$i=2;
foreach($schoolsas$school){
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A'.$i,$school->id)
->setCellValue('B'.$i,$school->name)
->setCellValue('C'.$i,$school->type)
->setCellValue('D'.$i,$school->city)
->setCellValue('E'.$i,$school->district);
$i++;
}
$objPHPExcel->setActiveSheetIndex(0);
header('Content-Type:application/vnd.ms-excel');
header('Content-Disposition:attachment;filename="學校列表'.date("Y/m/d").'.xls"');
header('Cache-Control:max-age=0');
$objWriter=PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel5');
$objWriter->save('php://output');
⑶ php怎麼導出大量數據的Excel
簡介:可以利用工具軟體導出成Excel文件
工具原料:Apache+php+mysql網站運行環境,phpMyAdmin v4.6.2
1、下載phpMyAdmin v4.6.2軟體後解壓放在網站根目錄
2、用root用戶和密碼登入phpMyAdmin,在左邊欄點擊要導出的資料庫,然後點擊要導出的數據表,最後點擊導出如圖所示。
5、最後點擊執行按鈕,OK.
⑷ 如何通過PHP實現EXCEL與MYSQL之間的導入導出
1.先介紹一下這個Excel資料庫的結構,且命名為E.xls,欄位有4個(40個也一樣搞定),欄位名為a,b,c,d,接著對jm.xls做分解:
1)選中欄位a中的全部記錄,選擇"復制"
2)新建一個Excel資料庫文件,把復制過來的數據粘貼在一個空白的欄位(通常是A)下,保證其他欄位空白,保存為a.xls
3)另存a.xls為a.txt(格式為"文本文件(製表符分隔)")
4)E.xls中其他3個欄位的數據按1到3步驟繼續生成b.txt,c.txt和d.txt。
2.完成上述步驟後,你已經完成了大部分的工作,下面就由php和mysql來完成,很簡單:
1)要把數據放在mysql中,必須建立一個mysql資料庫文件名為dbname(與php代碼中的dbname要一致),包括表tbname(與php代碼中的tbname要一致),4個欄位inc char(100),adds char(100),pri char(100),tel char(100),大小要根據Excel中欄位大小做調整,否則可能出現部分值丟失。
2)再編寫php代碼,是最主要的,代碼如下:
------txt2mysql.php---------
<?
$inc=file("a.txt");
$adds=file("b.txt");
$pri=file("c.txt");
$tel=file("d.txt");
$i=0;
mysql_connect();
while (strlen($inc[$i])>0)
{
$sql="insert into tbname values ('$inc[$i]','$adds[$i]','$pri[$i]','$tel[$i]')";
$do=mysql_db_query("dbname",$sql);
$i=$i+1;
echo '<br>';
}
$s="select * from tbname";
$gg=mysql_db_query("dbname",$s);
$n=mysql_num_rows($gg);
mysql_close();
echo '<br>';
echo "共添加了".$n."個記錄";
?>
這種方法很簡單吧!我剛試了一下挺管用的。你稍微改一下,相信能完成!
關鍵在於,如何把excel 中的數據讀取出來,導入是很簡單的事。
分別 把相應的列 另存為,相應的txt。就能得到!然後 以數組的方式讀取。
⑸ PHP如何導出Excel文件
昨天項目里有個新需求,客戶希望把一些數據能導出成為Excel表格,剛開始用PHP原生輸入Excel表格,發現效果不是很理想,於是找到一個比較著名的庫:PHPExcel。下面是一個簡單的demo,分享給大家,希望可以幫到有同樣需求的朋友。
1.網路:phpexcel,結果如圖所示,點擊第一個結果;
PHP導出Excel,PHP輸入Excel
2.進入官網後,找到右邊的download按鈕,下載,下載完成的是一個壓縮文件,解壓放到你的項目目錄里,根據個人情況而定;
PHP導出Excel,PHP輸入Excel
PHP導出Excel,PHP輸入Excel
3.因為這里給大家做演示,所以建了一個測試文件,有點基礎的都能明白是怎麼回事,下面進入代碼;
PHP導出Excel,PHP輸入Excel
4.
//引入PHPExcel庫文件(路徑根據自己情況)
include './phpexcel/Classes/PHPExcel.php';
//創建對象
$excel = new PHPExcel();
//Excel表格式,這里簡略寫了8列
$letter = array('A','B','C','D','E','F','F','G');
//表頭數組
$tableheader = array('學號','姓名','性別','年齡','班級');
//填充表頭信息
for($i = 0;$i < count($tableheader);$i++) {
$excel->getActiveSheet()->setCellValue("$letter[$i]1","$tableheader[$i]");
}
PHP導出Excel,PHP輸入Excel
5.
//表格數組
$data = array(
array('1','小王','男','20','100'),
array('2','小李','男','20','101'),
array('3','小張','女','20','102'),
array('4','小趙','女','20','103')
);
//填充表格信息
for ($i = 2;$i <= count($data) + 1;$i++) {
$j = 0;
foreach ($data[$i - 2] as $key=>$value) {
$excel->getActiveSheet()->setCellValue("$letter[$j]$i","$value");
$j++;
}
}
PHP導出Excel,PHP輸入Excel
6.
//創建Excel輸入對象
$write = new PHPExcel_Writer_Excel5($excel);
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/vnd.ms-execl");
header("Content-Type:application/octet-stream");
header("Content-Type:application/download");;
header('Content-Disposition:attachment;filename="testdata.xls"');
header("Content-Transfer-Encoding:binary");
$write->save('php://output');
PHP導出Excel,PHP輸入Excel
7.打開頁面,刷新的時候會彈出對話框,讓你選擇文件保存路徑和文件名稱,我直接放在了桌面上,如圖所示;
PHP導出Excel,PHP輸入Excel
PHP導出Excel,PHP輸入Excel
8.打開表格後,數據和格式跟代碼中的一致,說明PHP導出的Excel是正確的。如果出現錯誤,檢查一下你的表格數組和數據數組吧。
PHP導出Excel,PHP輸入Excel
⑹ php怎麼導出大量數據的Excel
用這個吧:PHPExcel
步驟:
1.網路:phpexcel,結果如圖所示,點擊第一個結果;
2.進入官網後,找到右邊的download按鈕,下載,下載完成的是一個壓縮文件,解壓放到你的項目目錄里,根據個人情況而定;
3.因為這里給大家做演示,所以建了一個測試文件,有點基礎的都能明白是怎麼回事,下面進入代碼;
4.
//引入PHPExcel庫文件(路徑根據自己情況)
include './phpexcel/Classes/PHPExcel.php';
//創建對象
$excel = new PHPExcel();
//Excel表格式,這里簡略寫了8列
$letter = array('A','B','C','D','E','F','F','G');
//表頭數組
$tableheader = array('學號','姓名','性別','年齡','班級');
//填充表頭信息
for($i = 0;$i < count($tableheader);$i++) {
$excel->getActiveSheet()->setCellValue("$letter[$i]1","$tableheader[$i]");
}
5.
//表格數組
$data = array(
array('1','小王','男','20','100'),
array('2','小李','男','20','101'),
array('3','小張','女','20','102'),
array('4','小趙','女','20','103')
);
//填充表格信息
for ($i = 2;$i <= count($data) + 1;$i++) {
$j = 0;
foreach ($data[$i - 2] as $key=>$value) {
$excel->getActiveSheet()->setCellValue("$letter[$j]$i","$value");
$j++;
}
}
6.
//創建Excel輸入對象
$write = new PHPExcel_Writer_Excel5($excel);
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/vnd.ms-execl");
header("Content-Type:application/octet-stream");
header("Content-Type:application/download");;
header('Content-Disposition:attachment;filename="testdata.xls"');
header("Content-Transfer-Encoding:binary");
$write->save('php://output');
7.打開頁面,刷新的時候會彈出對話框,讓你選擇文件保存路徑和文件名稱,我直接放在了桌面上,如圖所示;
8.打開表格後,數據和格式跟代碼中的一致,說明PHP導出的Excel是正確的。如果出現錯誤,檢查一下你的表格數組和數據數組吧。
⑺ php怎麼導出大量數據的Excel
首先利用PHPExcel實現excel的導入導出功能,然後做一個批處理程序即可,看你運用的php環境,根據不同環境來設置不同批處理命令。
⑻ phpexcel讀取excel 再導出 php
publicfunctioninsert_excel(){
set_time_limit(0);
require_once'./data/excel/PHPExcel.php';
$objReader=PHPExcel_IOFactory::createReader('Excel5');
$objReader->setReadDataOnly(true);
$objPHPExcel=$objReader->load("./Public/Book1.xls");
$objWorksheet=$objPHPExcel->getSheet(0);
$highestRow=$objWorksheet->getHighestRow();
$highestColumn=$objWorksheet->getHighestColumn();
$highestColumnIndex=PHPExcel_Cell::columnIndexFromString($highestColumn);
$excelData=array();
//注意列數和行數的起始位置
for($row=2;$row<=$highestRow;$row++){
for($col=0;$col<$highestColumnIndex;$col++){
$excelData[$row][]=(string)$objWorksheet->getCellByColumnAndRow($col,$row)->getValue();
}
}
$map=M('map_info');
//獲取該地圖的;
foreach($excelDataas$key=>$val){
//此處需要對自定義的欄位序列map_map_custom.cid
$result=curl_get('http://api.map..com/geocoder/v2/?address=雲南魯甸'.$val[1].'&output=json&ak=');
$info=json_decode($result,true);
$data=array(
'uid'=>139,
'mid'=>441,
'tid'=>1472,
'status'=>0,
'title'=>$val[0],
'contents'=>$val[2],
'create_time'=>time(),
'coordinate_lng'=>$info['result']['location']['lng']?$info['result']['location']['lng']:'',
'coordinate_lat'=>$info['result']['location']['lat']?$info['result']['location']['lat']:'',
);
$id=$map->add($data);
unset($data);
echo$id."---成功<br/>";
}
//mp($data);
exit;
}
上面是導入數據
publicfunctionexport_excel(){
$map_info=D("MapInfo");
$mid=intval($_GET["mid"]);
$mapinformation=M("map_info");
$search_type=$_REQUEST['search_type'];
$keywords=t($_REQUEST['keywords']);
$status=$_REQUEST['status'];
if(!empty($status)||$status==='0'){
$where['status']=$status;
$map['status']=$status;
}
$where['uid']=$this->uid;
$where['is_del']=0;
if(empty($search_type)&&!empty($_REQUEST['keywords'])){
$map['search_type']=$search_type;
$map['keywords']=$keywords;
$_search_where['title']=array('like',"%".$keywords."%");
$_search_where['contents']=array('like',"%".$keywords."%");
$_search_where['_logic']='or';
$where['_complex']=$_search_where;
}elseif(!empty($search_type)&&!empty($_REQUEST['keywords'])){
$map['search_type']=$search_type;
$map['keywords']=$keywords;
$where[$search_type]=array('like',"%".$keywords."%");;
}
$map=D('Map');
if($mid){
$where['mid']=$mid;
$excel_title=$map->where("mid=$mid")->getField('title');
$map_info_field="title,contents,map_info";
}else{
$excel_title="我的全部地圖數據";
$map_info_field="title,contents,mid";
}
$info_list=$map_info->getAllMapInfo($mid,$where,$map_info_field);
header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:filename=".$excel_title."-".date("Ymd",time()).".xls");
echoiconv('utf-8','gb2312','標題');echo" ";
echoiconv('utf-8','gb2312','簡介');echo" ";
if(!$mid){
echoiconv('utf-8','gb2312','地圖名稱');echo" ";
}else{
$custom_list=D('MapCustom')->getCustomList($mid);
foreach($custom_listas$k=>$v){
if($v['title']){
echoiconv('utf-8','gb2312',$v['title']);echo" ";
}
}
}
echo" ";
$order=array("'•'","' '","' '","' '","'s+'");//正則匹配回車,換行,空格
$replace=array('','','','','');
foreach($info_listas$key=>$val){
echomb_convert_encoding(preg_replace($order,$replace,strip_tags($val['title'])),'gb2312','utf-8');echo" ";
echomb_convert_encoding(preg_replace($order,$replace,strip_tags($val['contents'])),'gb2312','utf-8');echo" ";
if(!$mid){
$map_title=$map->where("mid=".$val['mid'])->getField('title');
echoiconv('utf-8','gb2312',preg_replace($order,$replace,$map_title));echo" ";
echo" ";
}else{
foreach($custom_listas$ke=>$va){
echoiconv('utf-8','gb2312',preg_replace($order,$replace,strip_tags($val['map_info'][$va['cid']])));echo" ";
}
echo" ";
}
}
}
PHPEXCEL類最好自己下載,我只是提交一個文件而已
⑼ php怎麼讀取excel 文件數據並輸出
PHPExcel
PHPExcel是用來操作Office Excel 文檔的一個PHP類庫,它基於微軟的OpenXML標准和PHP語言。可以使用它來讀取、寫入不同格式的電子表格,如 Excel (BIFF) .xls, Excel 2007 (OfficeOpenXML) .xlsx, CSV, Libre/OpenOffice Calc .ods, Gnumeric, PDF, HTML等等。
PHP讀取示例代碼
//獲取上傳的excel臨時文件
$path=$_FILES["file"]["tmp_name"];
//將臨時文件移動當前目錄,可自定義存儲位置
move_uploaded_file($_FILES["file"]["tmp_name"],$_FILES["file"]["name"]);
//將獲取在伺服器中的Excel文件,此處為上傳文件名
$path=$_FILES["file"]["name"];
//調用readExcel函數返回一個
二維數組
$exceArray=readExcel($path);
//創建一個讀取
excel函數
functionreadExcel($path){
//引入PHPExcel類庫
include'Classes/PHPExcel.php';
include'Classes/PHPExcel/IOFactory.php';
$type='Excel5';//設置為Excel5代表支持2003或以下版本,
Excel2007代表2007版
$xlsReader=PHPExcel_IOFactory::createReader($type);
$xlsReader->setReadDataOnly(true);
$xlsReader->setLoadSheetsOnly(true);
$Sheets=$xlsReader->load($path);
//開始讀取上傳到伺服器中的Excel文件,返回一個
二維數組
$dataArray=$Sheets->getSheet(0)->
toArray();
return$dataArray;
}
⑽ php怎麼導出大量數據的Excel
php導出大量數據到Excel,可以通過生成多個Excel文件,然後壓縮成壓縮包解決。
方案是:假如我們資料庫有10w條數據,每2000條數據生成一個Excel文件,這樣每次只要從資料庫里查詢出2000條數據即可,一定要分頁去查詢。
原因:主要是資料庫性能和寫文件性能。分頁查詢可以解決資料庫壓力的問題, 生成多個文件可以解決單個文件太大,後期維護Excel文件的問題。
要注意的:
1. 在導出邏輯文件開頭,一定要聲明 set_time_limit(0) ,防止腳本超時;
2. 每個文件生成後,適當的sleep一下,讓程序休息一下下;
3. 因為一次導出最後要將生成的多個Excel文件打包成一個壓縮包,所以要刪除掉生成的Excel文件,節省伺服器存儲空間;