封装读取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. SpringBoot包扫描之多模块多包名扫描和同类名扫描冲突解决

    前言 我们在开发springboot项目时候,创建好SpringBoot项目就可以通过启动类直间启动,运行一个web项目,非常方便简单,不像我们之前通过Spring+SpringMvc要运行启动一个w ...

  2. SQL 练习37

    检索至少选修两门课程的学生学号 SELECT Student.SId,Student.Sname,选课数 from Student, (SELECT sid,COUNT(cid) 选课数 from s ...

  3. noip14

    T1 考试假贪心,20pts,能摧毁就摧毁,不管前边已经摧毁的水晶. 正解: 首先肯定要离散化,然后考虑dp,设 \(dp_{i,j}\) 表示当前处理到了i,摧毁掉的水晶的a最小为j,则转移方程: ...

  4. zookeeper同一台服务器创建伪集群

    下载zk wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7 ...

  5. SpringBoot中的静态资源访问

    一.说在前面的话 我们之间介绍过SpringBoot自动配置的原理,基本上是如下: xxxxAutoConfiguration:帮我们给容器中自动配置组件: xxxxProperties:配置类来封装 ...

  6. 十五:JDBC学习入门

    一.JDBC相关概念介绍 1.1.数据库驱动 这里的驱动的概念和平时听到的那种驱动的概念是一样的,比如平时购买的声卡,网卡直接插到计算机上面是不能用的,必须要安装相应的驱动程序之后才能够使用声卡和网卡 ...

  7. docker 安装Hive

    转自:https://www.cnblogs.com/upupfeng/p/13452385.html#%E9%83%A8%E7%BD%B2hive 使用docker快速搭建hive环境   记录一下 ...

  8. 微信小程序学习笔记四 自定义组件

    1. 自定义组件 类似Vue或react中的自定义组件 小程序允许我们使用自定义组件的方式来构建页面 1.1 创建自定义组件 类似于页面, 一个自定义组件由json wxml wxss js 4个文件 ...

  9. 如何在 Go 中嵌入 Python

    如果你看一下 新的 Datadog Agent,你可能会注意到大部分代码库是用 Go 编写的,尽管我们用来收集指标的检查仍然是用 Python 编写的.这大概是因为 Datadog Agent 是一个 ...

  10. 原来:HTTP可以复用TCP连接

    问题 线上的一个项目会和微信服务器有API请求(目的是获取用户的微信信息),但会有偶发的报错: 'Connection aborted.', ConnectionResetError(104, 'Co ...