本文實例講述了PHP使用PHPExcel刪除Excel單元格指定列的方法。分享給大家供大家參考,具體如下:
需求是這樣的:
有一個系統(tǒng)僅公司內部和外部經(jīng)銷商使用,在一個導出功能中公司內部員工跟外部經(jīng)銷商導出的列是不一樣的(某些數(shù)據(jù)是不能提供給經(jīng)銷商的)
因為導出的數(shù)據(jù)都是一樣的(某些列外數(shù)據(jù)外部沒有)因此并沒有單獨處理,而是統(tǒng)一生成然后根據(jù)不同的賬戶再刪除沒有權限的列
/**
* @Author: HTL
* @Description: 移出單元列
* @objPHPExcel: phpexecel object
* @remove_columns:要移出的列
*/
function _remove_column($objPHPExcel,$remove_columns){
if(!$objPHPExcel
|| !is_object ($objPHPExcel)
|| !$remove_columns
|| !is_array($remove_columns)
|| count($remove_columns)<=0) return ;
//單元格模板值,用于匹配要刪除的列(在excel模板第一列)
$cell_val = '';
//單元格總列數(shù)
$highestColumm = $objPHPExcel->getActiveSheet()->getHighestColumn();
for ($column = 'A'; $column <= $highestColumm;) {
//列數(shù)是以A列開始
$cell_val = $objPHPExcel->getActiveSheet()->getCell($column."1");
$cell_val = preg_replace("/[\s{}]/i","", $cell_val);
//移出沒有權限導出的列
//移出后column不能加1,因為當前列已經(jīng)移出加1后會導致刪除錯誤的列
//此問題浪費了幾十分鐘
if(strlen($cell_val)>0 && in_array($cell_val,$remove_columns))
{
$objPHPExcel->getActiveSheet()->removeColumn( $column);
}
else
{
$column++;
}
}
}
//example
//導入PHPExcel類
vendor("PHPExcel.PHPExcel");
$filepath = './data/upload/temp.xlsx';
$objReader = \PHPExcel_IOFactory::createReader('Excel2007');
$objPHPExcel = $objReader->load($filepath);
$this->_remove_column($objPHPExcel,array("age","address"));
運行效果如下圖所示:
希望本文所述對大家PHP程序設計有所幫助。