thinkphp PHPexcel 导入导出的

thinkphp  框架用的不太多,也没怎么接触过PHPExcel,但是工作中需要用到PHPExcel 来进行导入数据 与导出数据。

于是就学习了下关于thinkphp与PHPExcel的整合。

百度,谷歌 上 资料很多 我也查了许多 ,然后 把我学到的知识分享下

可从官网上下载PHPExcel

http://phpexcel.codeplex.com/releases/view/119187

放在对应ThinkPHP里面 如下图  Vendor 是对应第三方资源库

    


可用vendor("PHPExcel.PHPExcel");加载第三方资源 





vender,import为thinkphp的原生态函数 

从上面代码可以看出 

用vendor("PHPExcel.PHPExcel"); 调用时  

        $baseUrl = VENDOR_PATH; //这里已经定义了 ThinkPHP\Library\Vendor对应的路径

在import函数里面 会将PHPExcel.PHPExce = 》PHPExcel/PHPExce 

最终引入的时候 会变成 

require D:\192.168.0.73\BigAnt5x_WebSys\www_demo\ThinkPHP\Library\Vendor\PHPExcel/PHPExce.php;


如果我引入其他的一个文件 如下



那我引入的是时候 可以用

vendor("WxpayController#class"); //import函数的是 将 #换成了 .

也可以用
import("WxpayController#class,VENDOR_PATH);  



说了 半天就讲了 导入PHPExcel 。。。。

接下来进入正题!!

先贴上代码

function sp_excle2array($file){
vendor("PHPExcel.PHPExcel");
vendor("PHPExcel.PHPExcel.IOFactory");

$objPHPExcel = PHPExcel_IOFactory::load($file);//用这个去解析一个对应excel文件
/**读取excel文件中的第一个工作表*/
$currentSheet = $objPHPExcel->getSheet(0);
/**取得最大的列号*/
$allColumn = $currentSheet->getHighestColumn();
/**取得一共有多少行*/
$allRow = $currentSheet->getHighestRow();


for ($currentRow = 1;$currentRow<=$allRow;$currentRow++){
for($currentColumn = "A";$currentColumn<=$allColumn;$currentColumn++){
  $address = $currentColumn . $currentRow;             // 数据坐标
               $ExlDataUser[] = $currentSheet->getCell($address)->getValue();// 读取到的数据,保存到数组$arr中
               //echo $currentSheet->getCell($address)->getValue() ."<br/>";
}
$ExlDataAll[] = $ExlDataUser;
unset($ExlDataUser);
}
return $ExlDataAll;
}


根据需要 可以从相应excel位置获取值 


/**
 * 数组  转 excel
 * @param unknown $file
 * @return mixed
 */
function sp_array2excel($data,$file = '',$filePreName = '')
{
if ($file == ''){
$d = getdate() ;
$file = $d[0] ;

if ($filePreName) $file = $filePreName . '_' . $file ;
}
//文件名
$outputFileName = $file .'.xls';
//文件路径
$file = './data/export/'. $file .'.xls' ;
//var_dump($file);var_dump($outputFileName);die();
vendor("PHPExcel.PHPExcel");
$objPHPExcel = new PHPExcel();
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
/* 设置当前的sheet */
$objPHPExcel->setActiveSheetIndex(0);
$objActSheet = $objPHPExcel->getActiveSheet();



//设置自适应宽度
$N = 'A';
for ($M=0;$M<count($data[0]);$M++){
$objPHPExcel->getActiveSheet()->getColumnDimension($N)->setAutoSize(true);
$N++;
}

//填充数据
$i = 1;
foreach($data as $value)
{
/* excel文件内容 */
$j = 'A';

foreach($value as $value2)
{ 
//            $value2=iconv("gbk","utf-8",$value2);
$objActSheet->setCellValue($j.$i,$value2);
$j++;
}
$i++;
}

//生成excel文件
ob_end_clean();  //清空缓存
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="'.$outputFileName.'"');
header("Content-Transfer-Encoding:binary");
//$objWriter->save(“”php://output“”);
$objWriter->save($file);
$file = str_replace("./", "/", $file);
return $file ;
}


根据数组生成一个excel文件(save($file)) 或者直接输出出来(save(“”php://output“”);)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值