首先需要去官网http://www.php.cn/xiazai/leiku/1491,下载后只需要Classes目录下的文件即可。
1、PHPExcel导出方法实现过程
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/**
* 数据导出
* @param array $title 标题行名称
* @param array $data 导出数据
* @param string $fileName 文件名
* @param string $savePath 保存路径
* @param $type 是否下载 false--保存 true--下载
* @return string 返回文件全路径
* @throws PHPExcel_Exception
* @throws PHPExcel_Reader_Exception
*/
function exportExcel($title=array(),$data=array(),$fileName='',$savePath='./',$isDown=false){
include('PHPExcel.php');
$obj =new PHPExcel();
//横向单元格标识
$cellName =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','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ');
$obj->getActiveSheet(0)->setTitle('sheet名称');//设置sheet名称
$_row = 1;//设置纵向单元格标识
if($title){
$_cnt =count($title);
$obj->getActiveSheet(0)->mergeCells('A'.$_row.':'.$cellName[$_cnt-1].$_row);//合并单元格
$obj->setActiveSheetIndex(0)->setCellValue('A'.$_row,'数据导出:'.date('Y-m-d H:i:s'));//设置合并后的单元格内容
$_row++;
$i = 0;
foreach($title AS$v){//设置列标题
$obj->setActiveSheetIndex(0)->setCellValue($cellName[$i].$_row,$v);
$i++;
}
$_row++;
}
//填写数据
if($data){
$i = 0;
foreach($data AS$_v){
$j = 0;
foreach($_v AS$_cell){
$obj->getActiveSheet(0)->setCellValue($cellName[$j] . ($i+$_row),$_cell);
$j++;
}
$i++;
}
}
//文件名处理
if(!$fileName){
$fileName = uniqid(time(),true);
}
$objWrite = PHPExcel_IOFactory::createWriter($obj,'Excel2007'); //这里Excel2007 可能会报错 如果报错改成 Excel5 再试
if($isDown){//网页下载
header('pragma:public');
header("Content-Disposition:attachment;filename=$fileName.xls");
$objWrite->save('php://output');exit;
}
$_fileName = iconv("utf-8","gb2312",$fileName);//转码
$_savePath =$savePath.$_fileName.'.xlsx';
$objWrite->save($_savePath);
return $savePath.$fileName.'.xlsx';
}
//$this->exportExcel(array('姓名','年龄'), array(array('a',21),array('b',23)), '档案', './', true);
2、PHPExcel导入方法实现过程
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/**
* 数据导入
* @param string $file excel文件
* @param string $sheet
* @return string 返回解析数据
* @throws PHPExcel_Exception
* @throws PHPExcel_Reader_Exception
*/
function importExecl($file='',$sheet=0){
$file = iconv("utf-8","gb2312",$file);//转码
if(empty($file) OR !file_exists($file)) {
die('file not exists!');
}
include('PHPExcel.php');//引入PHP EXCEL类
$objRead =new PHPExcel_Reader_Excel2007();//建立reader对象
if(!$objRead->canRead($file)){
$objRead =new PHPExcel_Reader_Excel5();
if(!$objRead->canRead($file)){
die('No Excel!');
}
}
$cellName =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','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ');
$obj =$objRead->load($file);//建立excel对象
$currSheet =$obj->getSheet($sheet);//获取指定的sheet表
$columnH =$currSheet->getHighestColumn();//取得最大的列号
$columnCnt =array_search($columnH,$cellName);
$rowCnt =$currSheet->getHighestRow();//获取总行数
$data =array();
for($_row=1;$_row<=$rowCnt;$_row++){//读取内容
for($_column=0;$_column<=$columnCnt;$_column++){
$cellId =$cellName[$_column].$_row;
$cellValue =$currSheet->getCell($cellId)->getValue();
//$cellValue = $currSheet->getCell($cellId)->getCalculatedValue(); #获取公式计算的值
if($cellValue instanceof PHPExcel_RichText){//富文本转换字符串
$cellValue =$cellValue->__toString();
}
$data[$_row][$cellName[$_column]] =$cellValue;
}
}
return $data;
}
不用PHPExcel类也能导出数据:
/*
* @creator Jimmy
* @data 2018/1/05
* @desc 数据导出到excel(csv文件)
* @param $filename 导出的csv文件名称 如date("Y年m月j日").'-test.csv'
* @param array $tileArray 所有列名称
* @param array $dataArray 所有列数据
*/
public function exportToExcel($filename, $tileArray=[], $dataArray=[]){
ini_set('memory_limit','512M');
ini_set('max_execution_time',0);
ob_end_clean();
ob_start();
header("Content-Type: text/csv");
header("Content-Disposition:filename=".$filename);
// $fp=fopen('php://output','w');
$fp=fopen('D:\phpStudy\PHPTutorial\WWW\juyouyu\Source\API\backend\web\\'.$filename,'w');
fwrite($fp, chr(0xEF).chr(0xBB).chr(0xBF));//转码 防止乱码(比如微信昵称(乱七八糟的))
fputcsv($fp,$tileArray);
$index = 0;
foreach ($dataArray as $item) {
if($index==1000){
$index=0;
ob_flush();
flush();
}
$index++;
fputcsv($fp,$item);
}
ob_flush();
flush();
ob_end_clean();
}
public function actionIndex()
{
$a = array('姓名','年龄');
$b = array(array('a',21),array('b',23));
$filename = date("Y年m月j日").'-test.csv';
$this->exportToExcel($filename,$a,$b);
}
下载远程(第三方服务器)文件、图片,保存到本地(服务器)的方法、保存抓取远程文件、图片 将图片的二进制字节字符串在HTML页面以图片形式输出 asp.net 文件 操作方法
下载远程(第三方服务器)文件.图片,保存到本地(服务器)的方法.保存抓取远程文件.图片 将一台服务器的文件.图片,保存(下载)到另外一台服务器进行保存的方法: 1 #region 图片下载 2 3 ...
使用URLConnection下载文件或图片并保存到本地
有时候需要从网络上面下载图片到本地进行保存,代码如下: package com.jointsky.jointframe.test; import java.io.FileOutputStream; i ...
php 文件上传 以及保存在本地的乱码问题处理
要知道两点: ①浏览器传到PHP程序中是UTF-8编码 ②PHP程序保存上传的文件,要转换成GBK编码才保存在本地中,否则如果直接使用浏览器传过来的文件名保存在本地,会出现文件名乱码. <?ph ...
java获取远程网络图片文件流、压缩保存到本地
1.获取远程网路的图片 /** * 根据地址获得数据的字节流 * * @param strUrl * 网络连接地址 * @return */ public static byte[] getImage ...
如何将S/4HANA系统存储的图片文件用Java程序保存到本地
我在S/4HANA的事务码MM02里为Material维护图片文件作为附件: 通过如下简单的ABAP代码即可将图片文件的二进制内容读取出来: REPORT zgos_api. DATA ls_appl ...
C# 实现文件(夹)在ftp服务器间的同步【无需将文件(夹)保存到本地】
C#实现不同ftp服务器间文件(夹)同步 图1 实现不同ftp服务器间文件(夹)同步的实现思路图 /// /// 将文件夹1从ftp服务器1移到ftp服务器2文件夹2 ...
EXCEL文件导入时报_未在本地计算机上注册Microsoft.ACE.OLEDB.12.0提供程序
解决办法: 解决访问Excel数据源时出现 未在本地计算机上注册Microsoft.ACE.OLEDB.12.0提供程序1.确保安装了Microsoft.ACE.OLEDB.12.0驱动 http:/ ...
文件压缩跟解压(本地&;Linux服务器)
远程解压需要的jar包: commons-netcommons ...
mysql source命令超大文件导入方法总结
本文章来给各位朋友介绍利用mysql source命令超大文件导入方法总结,下面收集了两种解决办法,一种是把数据库分文件导出然后再导入,另一种是修改my.ini配置文件,下面我一一给各位朋友介绍. 导 ...
随机推荐
1.44tft
https://item.taobao.com/item.htm?spm=a230r.1.14.107.pBOVu5&id=16660981098&ns=1&abbucket= ...
时间格式转化 String2datestyle
时间格式转化成string工具类: package cn.javass.util; import java.text.DateFormat; import java.text.SimpleDateFo ...
SingleThreadModel is deprecated in Servlet API version 2.4
Ensures that servlets handle only one request at a time. This interface has no methods. If a servlet ...
中国(北方)大学生程序设计训练赛(第一周) (D E)
比赛链接 D题是个二分,每次check复杂度为O(n),类似于xdu_1068,只是一个是求积,一个是求商 #include using namespace ...
从零开始学spring cloud(十) -------- hystrix简单代码示例
一.官网文档阅读 较低级别的服务中的服务故障可能导致级联故障一直到用户. 当对特定服务的调用超过circuitBreaker.requestVolumeThreshold(默认值:20个请求)且失败百 ...
C#字节图片互转、字节转换图片、图片转换字节、byte[]转换图片、图片转换成byte[]