phpExcel

  用的是CI框架,用CI系统自带方法引入插件类,当类名和引入名不一致就会出现引入失败的问题

$this->load->library()

解决方法:include 或者 require 引入插件

①导出excel
1.引入类

require_once FCPATH . 'plugins/PHPExcel/PHPExcel.php';
require_once FCPATH . 'plugins/PHPExcel/PHPExcel/Writer/Excel2007.php';
//require_once FCPATH . 'plugins/PHPExcel/PHPExcel/Writer/Excel5.php';
require_once FCPATH . 'plugins/PHPExcel/PHPExcel/IOFactory.php';

2.设置格式

$excel = new PHPExcel();
//设置当前的sheet
$excel->setActiveSheetIndex(0); //可以有多个内联表
$active_sheet = $excel->getActiveSheet();
//设置sheet的name
$active_sheet->setTitle('快递');
//设置居中
$active_sheet->getStyle('A')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
//设置标题加粗
$active_sheet->getStyle('A1')->getFont()->setBold(true);
//设置单元格宽度
$active_sheet->getColumnDimension('A')->setWidth(10);
//设置标题
$active_sheet->setCellValue('A1', 'id');

3.填充内容

//数据从第二行开始
$i = 2; 
foreach ($orders as $order) {
    //设置单元格的值
    $active_sheet->setCellValue('A' . $i, $order['id']);
    $i++;
}

4.保存文件名

$save_name = '快递';
$ua = $_SERVER["HTTP_USER_AGENT"];
//处理IE导出中文名称乱码
if (preg_match("/MSIE/", $ua)) {
    $save_name = urlencode($save_name);
}
//excel头参数
header('Content-Type: application/vnd.ms-excel');
//日期为文件名后缀
header('Content-Disposition: attachment;filename="' . $save_name . '.xlsx"');
header('Cache-Control: max-age=0');
//excel5为xls格式,excel2007为xlsx格式
$objWriter = PHPExcel_IOFactory::createWriter($excel, 'Excel2007');
$objWriter->save('php://output');

  

 

②导入excel

1.引入类

require_once FCPATH . 'plugins/PHPExcel/PHPExcel.php';
require_once FCPATH . 'plugins/PHPExcel/PHPExcel/Reader/Excel2007.php';
//require_once FCPATH . 'plugins/PHPExcel/PHPExcel/Reader/Excel5.php';
require_once FCPATH . 'plugins/PHPExcel/PHPExcel/IOFactory.php';

2.加载信息

$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objPHPExcel = $objReader->load($excel_file_full_name); //excel路径
$sheet = $objPHPExcel->getSheet(0);//第一张表
//取得总行数 为数字
$highestRow = $sheet->getHighestRow(); 
//取得总列数 为大写字母
$highestColumn = $sheet->getHighestColumn();

3.提取内容

for ($j = 2; $j <= $highestRow; $j++) //从第二行开始读取数据
{
    $row = array(); //保存一行数据 即一条记录
    for ($k = 'A'; $k <= $highestColumn; $k++) //从A列读取数据
    {
        $row[] = $objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue();
    }
    //执行插入操作
    $order = $this->order_model->add($row);
}
@unlink($excel_file_full_name); //删除文件

phpExcel 是一款功能强大的插件可以支持csv,pdf,excel 等格式导入和导出在项目中也是经常用到的实用工具 

posted @ 2016-09-01 11:11  东歌  阅读(221)  评论(0编辑  收藏  举报