Codeigniter集成PHPExcel
2015-12-01 18:50
706 查看
先下载PHPExcel
1) 压缩包里的Classes文件夹放到application\libraries\目录下,目录结构如下: -- application\libraries\PHPExcel.php
-- application\libraries\PHPExcel (文件夹)
2)修改application\libraries\PHPExcel\IOFactory.php 文件
-- 将其类名从PHPExcel_IOFactory改为IOFactory,遵从CI类命名规则。
-- 将其构造函数改为public
控制器里的方法
/* * 生成下载excel文件 * $filename="生成的excel名称"; * $headArr=array("表头","名称"); * $data 要显示的数据 * array(array('username'=>1,'pwd'=>2),array(...)..); * 调用方法: * $this->getExcel($filename,$headArr,$data); * */ public function getExcel($fileName = "test", $headArr = array("username","pwd"), $data = array(array('username'=>1,'pwd'=>2))) { date_default_timezone_set('Asia/Shanghai'); //对数据进行检验 if (empty($data) || !is_array($data)) { die("data must be a array"); } //检查文件名 if (empty($fileName)) { exit; } $date = date("Y_m_d", time()); $fileName .= "_{$date}.xls"; $this->load->library('PHPExcel'); $this->load->library('PHPExcel/IOFactory'); //创建PHPExcel对象 $objPHPExcel = new PHPExcel(); $objPHPExcel->getProperties(); //设置表头 $key = ord("A"); foreach ($headArr as $v) { $colum = chr($key); $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '1', $v); $key += 1; } $column = 2; $objActSheet = $objPHPExcel->getActiveSheet(); foreach ($data as $key => $rows) { //行写入 $span = ord("A"); foreach ($rows as $keyName => $value) { // 列写入 $j = chr($span); $objActSheet->setCellValue($j . $column, $value); $span++; } $column++; } $fileName = iconv("utf-8", "gb2312", $fileName); //重命名表 //设置活动单指数到第一个表,所以Excel打开这是第一个表 $objPHPExcel->setActiveSheetIndex(0); ob_end_clean(); //清除缓冲区,避免乱码 header('Content-Type: application/vnd.ms-excel'); header("Content-Disposition: attachment;filename=\"$fileName\""); header('Cache-Control: max-age=0'); $objWriter = IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output'); //文件通过浏览器下载 exit; }
</pre><pre name="code" class="php">
<pre name="code" class="php">/* * 导入execl文件获取表中数据 * @param [file] $file [excel文件存放路径] * @return [array] [返回表中数据] */ public function execExcel() { date_default_timezone_set('Asia/Shanghai'); $file = "./uploads/test.xls"; //检查文件 if (empty($file)) { exit; } $this->load->library('PHPExcel'); $this->load->library('PHPExcel/IOFactory'); // $CI->load->library('PHPExcel/Reader/Excel5'); // 创建对象 $objPHPExcel = new IOFactory(); $readerType = $objPHPExcel::identify($file); $objReader = $objPHPExcel::createReader($readerType); // 读文件 $objPHPExcel = $objReader->load($file); $objWorksheet = $objPHPExcel->getActiveSheet(0); // 总行数 $highestRow = $objWorksheet->getHighestRow(); // 总列数 $highestColumn = $objWorksheet->getHighestColumn(); $highestColumnIndex = range('A', $highestColumn); $data = array(); // 从第二行开始,第一行一般是表头 for ($row = 2; $row <= $highestRow; $row++) { $array = array(); foreach ($highestColumnIndex as $value) { $address = $value . $row; $array[] = $objWorksheet->getCell($address)->getFormattedValue(); } array_push($data, $array); } return $data; }
相关文章推荐
- 一个关于if else容易迷惑的问题
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- JSP/PHP基于Ajax的分页功能实现
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- PHP数据库长连接mysql_pconnect的细节
- Php Installing An Expansion
- PHP+Apache在Windows 9x下的安装和配置
- IIS 6 的 PHP 最佳配置方法
- 安装Apache和PHP的一些补充
- Linux Apache+MySQL+PHP
- 建立Apache+PHP+MySQL数据库驱动的动态网站
- PHP 5.3.0 安装分析心得
- apache 环境下 php 的配置注意事项
- ASP.NET、ASP、PHP、JSP之间有什么区别?
- PHP VBS JS 函数 对照表
- C语言实现的统计php代码行数功能源码(支持文件夹、多目录)
- php xml 入门学习资料