PHPExcel读取和写入Excel文件

PHPExcel,下载地址:https://github.com/PHPOffice/PHPExcel


读取Excel文件

require_once '../extend/PHPExcel/PHPExcel/IOFactory.php';
     
//加载excel文件  
// $filename = dirname(__FILE__) . '/result.xlsx';
$objPHPExcelReader = \PHPExcel_IOFactory::load($url);

$sheet = $objPHPExcelReader->getSheet(0);    // 读取第一个工作表(编号从 0 开始)  
$highestRow = $sheet->getHighestRow();      // 取得总行数  
$highestColumn = $sheet->getHighestColumn();   // 取得总列数  

$arr = 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');
// 一次读取一列  
$res_arr = array();
for ($row = 2; $row <= $highestRow; $row++) {
  $row_arr = array();
  for ($column = 0; $arr[$column] != 'K'; $column++) {
    $val = $sheet->getCellByColumnAndRow($column, $row)->getValue();
    $row_arr[] = $val;
  }

  $res_arr[] = $row_arr;
}



写入 Excel文件


/** 
 * 创建(导出)Excel数据表格 
 * @param array  $list    要导出的数组格式的数据 
 * @param string $filename  导出的Excel表格数据表的文件名 
 * @param array  $indexKey  $list数组中与Excel表格表头$header中每个项目对应的字段的名字(key值) 
 * @param array  $startRow  第一条数据在Excel表格中起始行 
 * @param [bool] $excel2007  是否生成Excel2007(.xlsx)以上兼容的数据表 
 * 比如: $indexKey与$list数组对应关系如下: 
 *   $indexKey = array('id','username','sex','age'); 
 *   $list = array(array('id'=>1,'username'=>'YQJ','sex'=>'男','age'=>24)); 
 */
function exportExcel($list, $filename, $indexKey, $startRow = 1, $excel2007 = false)
{
  //文件引入  
  require_once APP_ROOT . '/Api/excel/PHPExcel.php';
  require_once APP_ROOT . '/Api/excel/PHPExcel/Writer/Excel2007.php';

  if (empty($filename)) $filename = time();
  if (!is_array($indexKey)) return false;

  $header_arr = 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');
  //初始化PHPExcel()  
  $objPHPExcel = new PHPExcel();

  //设置保存版本格式  
  if ($excel2007) {
    $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
    $filename = $filename . '.xlsx';
  } else {
    $objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);
    $filename = $filename . '.xls';
  }

  //接下来就是写数据到表格里面去  
  $objActSheet = $objPHPExcel->getActiveSheet();
  //$startRow = 1;  
  foreach ($list as $row) {
    foreach ($indexKey as $key => $value) {
      //这里是设置单元格的内容  
      $objActSheet->setCellValue($header_arr[$key] . $startRow, $row[$value]);
    }
    $startRow++;
  }

  // 下载这个表格,在浏览器输出  
  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=' . $filename . '');
  header("Content-Transfer-Encoding:binary");
  $objWriter->save('php://output');
}




下面还有一种不依赖


function createtable($list,$filename){  
  header("Content-type:application/vnd.ms-excel");  
  header("Content-Disposition:filename=".$filename.".xls");  
  
  $strexport="编号\t姓名\t性别\t年龄\r";  
  foreach ($list as $row){  
	
    $strexport.=$row['id']."\t";  
    $strexport.=$row['username']."\t";  
    $strexport.=$row['sex']."\t";  
    $strexport.=$row['age']."\r";  
		
  }  
  $strexport=iconv('UTF-8',"GB2312//IGNORE",$strexport);  
  exit($strexport);   
}




修改时间 2016-08-08

真诚赞赏,手留余香
赞赏
随机推荐
一个模板解析函数的bug
OpenSSL 创建 Nginx 可使用自建证书
jQuery Mobile 1.4.5 select数据更新
Wordpress 添加主题自定义字段设置面板
MySQL 管理用户
PHP下载文件,隐藏真实文件地址
Vue.js 源码学习笔记
CSS实现单行、多行文本溢出显示省略号
MySQL AUTO_INCREMENT 自动增长的一些知识
当async/await遇上forEach