封装读取excel内容方法
    /**
* 获取Excel内容
* @param type $filename
* @return type
*/
public function getExcelContent($filename) {
//读取内容
$objPHPExcel = \PHPExcel_IOFactory::load($filename);
$objPHPExcel->setActiveSheetIndex(0);
$sheet1 = $objPHPExcel->getSheet(0);
//获取行数,并把数据读取出来$data数组
$rowCount = $sheet1->getHighestRow(); //excel行数
$data = array();
$this->column = 100; //最大列数
for ($i = 1; $i <= $rowCount; $i++) {
for ($j = 0; $j < $this->column; $j++) {
$value = (string)$sheet1->getCellByColumnAndRow($j, $i)->getValue();
if ($i == 1 && empty($value)) {
$this->column = $j; //当第一列遇到空的时候替换最大列数
} else {
$data[$i - 1][$j] = $value; //获取每一列的值
}
}
}
return $data;
}
封装excel导出方法
<?php

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/ namespace app\common\model; use think\Model;
use think\Db; /**
* Description of OrderSourceController
*
* @author zhangjx <zhangjx882@sina.com>
* @date 2017-9-8
*/
class Excel extends Model {
/**
* Excel列数getExcelContent()专用
*/
protected $column; private function checkExcel($fileName, $fileAddress, $loadFileAddress){
if (empty($fileName))
return false;
set_time_limit(0);
ini_set('memory_limit', '512M');
// 检测文件夹如果不存在就生成
Directory($fileAddress);
vendor('excel.PHPExcel');
// $cacheMethod = \PHPExcel_CachedObjectStorageFactory::cache_in_memory;
// $cacheSettings = array('memoryCacheSize'=>'50MB');
// \PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);
if ($loadFileAddress == null) {
$objPHPExcel = new \PHPExcel();
} else {
$objReader = \PHPExcel_IOFactory::createReader("Excel2007");
$objReader->setIncludeCharts(TRUE);
$objPHPExcel = $objReader->load($loadFileAddress);
} return $objPHPExcel;
} /**
* 导出excel 公共方法 若表头一致可采用
* @param array $xlsCellName excel表列名
* @param array $xlsCellValue excel表列值
* @param string $fileName 文件名称
* @param string $fileAddress 文件保存地址
* @param integer $beginNum 开始写数据的行数
* @param null $loadFileAddress 是否读取其他文件作为模板配置
* @return string
*/ public function exportExcel($xlsCellName, $xlsCellValue, $fileName, $fileAddress, $beginNum = 1, $loadFileAddress = null) {
$objPHPExcel = $this->checkExcel($fileName, $fileAddress, $loadFileAddress); // 合并数据
$xlsData = array_merge(array($xlsCellName), $xlsCellValue); foreach ($xlsData as $num => $data) {
$row = $num + $beginNum;
$chr = 0;
foreach ($data as $val) {
$col = self::IntToChr($chr);
$chr++;
$objPHPExcel->getActiveSheet(0)->setCellValue($col . $row, $val);
}
} header('pragma:public');
header('Content-type:application/vnd.ms-excel;charset=utf-8;name="' . $fileName . '.xls"');
header("Content-Disposition:attachment;filename=$fileName.xls"); //attachment新窗口打印inline本窗口打印
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
// $objWriter->save('php://output');
$objWriter->save($fileAddress . $fileName . '.xls');
return $_SERVER['REQUEST_SCHEME'] . "://" . $_SERVER['HTTP_HOST'] . ltrim($fileAddress, '.') . $fileName . '.xls'; //增加后缀
} /**
* 数字转字母 (类似于Excel列标)
* @param integer $index 索引值
* @param integer $start 字母起始值
* @return String 返回字母
*/
public static function IntToChr($index, $start = 65) {
$str = '';
if (floor($index / 26) > 0) {
$str .= self::IntToChr(floor($index / 26) - 1);
}
return $str . chr($index % 26 + $start);
}

实际业务中,会有多处列表需要用到导出和导入功能,如果不是特殊表头情况下可以考虑采用统一的方法,需要使用的地方直接调用

这样可以节省很多代码,而且使用起来会很方便

封装excel导出方法的更多相关文章

  1. .NET Excel导出方法及其常见问题详解

    摘要:.NET Excel导出方法及其常见问题详解. 一.Excel导出的实现方法 在.net 程序开发中,对于Excel文件的导出我们一共有三种导出方式: 利用文件输出流进行读写操作 这种方式的导出 ...

  2. PHP封装Excel表方法使用流程

    今天总结了一下Excel表的封装和导出使用,原理 经常使用与一些日常报表, 数据报表, 实现方法比较简单, 一次封装, 简单的方法调用,简单~ 废话不多说,直接入正题, 先说下重要的参数要记住的东西 ...

  3. 超级好用的excel导出方法,比phpexcel快n倍,并且无乱码

    public function exportToExcel($filename, $tileArray=[], $dataArray=[]){ ini_set('memory_limit','512M ...

  4. java反射学习之二万能EXCEL导出

    一.EXCEL导出的实现过程 假设有一个对象的集合,现在需要将此集合内的所有对象导出到EXCEL中,对象有N个属性:那么我们实现的方式是这样的: 循环这个集合,在循环集合中某个对象的所有属性,将这个对 ...

  5. vue2 Excel导出数据 js-xlsx的使用

    vue2 Excel导出数据 js-xlsx的使用 https://www.jianshu.com/p/ea115a8e9107 小世界最温暖 关注 2018.11.19 16:08 字数 280 阅 ...

  6. 懒人小工具:自动生成Model,Insert,Select,Delete以及导出Excel的方法

    在开发的过程中,我们为了节约时间,往往会将大量重复机械的代码封装,考虑代码的复用性,这样我们可以节约很多时间来做别的事情.最近跳槽到一节webform开发的公司,主要是开发自己公司用的ERP.开始因为 ...

  7. 懒人小工具1:winform自动生成Model,Insert,Select,Delete以及导出Excel的方法

       懒人小工具2:T4自动生成Model,Insert,Select,Delete以及导出Excel的方法    github地址:https://github.com/Jimmey-Jiang/J ...

  8. MVC导出数据到EXCEL新方法:将视图或分部视图转换为HTML后再直接返回FileResult

    导出EXCEL方法总结 MVC导出数据到EXCEL的方法有很多种,常见的是: 1.采用EXCEL COM组件来动态生成XLS文件并保存到服务器上,然后转到该文件存放路径即可: 优点:可设置丰富的EXC ...

  9. HTML Table导出为Excel的方法

    HTML Table导出为Excel的方法: 直接上源码 <html> <head> <meta http-equiv="Content-Type" ...

随机推荐

  1. Future有返回值的线程

    //创建一个线程池 ExecutorService pool = Executors.newFixedThreadPool(100); //创建多个有返回值的任务 List<Future> ...

  2. HBuilder mui 手机app开发 Android手机app开发 ios手机app开发 打开新页面 预加载页面 关闭页面

    创建子页面 在mobile app开发过程中,经常遇到卡头卡尾的页面,此时若使用局部滚动,在android手机上会出现滚动不流畅的问题: mui的解决思路是:将需要滚动的区域通过单独的webview实 ...

  3. CLR、CLI、CTS、CLS的关系

    网站:https://blog.csdn.net/dodream/article/details/4719578 ·CLR(公共语言运行库)是一个CLI的实现,包含了.NET运行引擎和符合CLI的类库 ...

  4. 七:使用Session进行会话管理

    一.Session简单介绍 在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下).因此,在需要保存用户数据时,服务 ...

  5. 阿里云sql监控配置-druid

    今天我们说说数据源和数据库连接池,熟悉java开发的同仁应该都了解C3PO,在这里不做过多的赘述了,今天我们说的是阿里DRUID,druid是后起之秀,因为它的优秀很快占领了使用市场,下边我们一起来看 ...

  6. Linux 替换^M字符

    Linux 替换^M字符 在Linux下使用vim 来查看一些在Windows下创建的文本文件,有时会发现在行尾有一些"^M". 1.使用dos2unix命令.一般的分发版本中都带 ...

  7. 微信小程序学习笔记五 常见组件

    1. 常见组件 重点讲解小程序中常用的布局组件 1.1 view 代替 原来的div标签 <!-- pages/index/index.wxml --> <view hover-cl ...

  8. NLP与深度学习(二)循环神经网络

    1. 循环神经网络 在介绍循环神经网络之前,我们先考虑一个大家阅读文章的场景.一般在阅读一个句子时,我们是一个字或是一个词的阅读,而在阅读的同时,我们能够记住前几个词或是前几句的内容.这样我们便能理解 ...

  9. IMO 1977 第 2 题探析

    原题:在一个有限的实数数列中,任意 7 个连续项之和为负数,且任意 11 个连续项之和为正数.求这个数列最多有多少项. 解法一:记这个数列为 a1, a2, ..., ak,问题等价于求 k 的最大值 ...

  10. idea快速搭建Tomcat服务器

    创建Web项目 新建Classes和lib文件夹 配置输出路径和资源路径 快捷键ctr+shift+alt+S打开项目配置 在modules下修改输出路径 修改依赖目录 修改war包输出路径 新建to ...