1. 云栖社区>
  2. PHP教程>
  3. 正文

使用PHPExcel对Execl多个sheet读写

作者:用户 来源:互联网 时间:2017-12-01 12:31:00

phpexcel使用execl读写sheet多个

使用PHPExcel对Execl多个sheet读写 - 摘要: 本文讲的是使用PHPExcel对Execl多个sheet读写, ###前言 123我们通常在工作中会遇到把数据库的数据导入到Execl,这时使用PHPExecl就会很方便。在官方网站下载:http://phpexcel.codeplex.com/下面的代码,我自己设定了模拟数据。这是写入多个Sheet

###前言



1
2
3
我们通常在工作中会遇到把数据库的数据导入到Execl,这时使用PHPExecl就会很方便。
在官方网站下载:http://phpexcel.codeplex.com/
下面的代码,我自己设定了模拟数据。

这是写入多个Sheet

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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<?php
/**
*简单实用Execl
*/set_include_path('.'.get_include_path().PATH_SEPARATOR.dirname(__FILE__).'/PHPExecl/');
/* @func 引入类 */
require 'PHPExcel.php';//模拟数据
$mulit_arr = array(
array('标题1', '标题2', '标题3'),
array('a', 'b', 'c'),
array('d', 'e', 'f')
);/* 优化设置 */
$cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_to_phpTemp;
$cacheSettings = array('memoryCacheSize'=>'16MB');
PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);
/* @实例化 */
$obpe = new PHPExcel();/* @func 设置文档基本属性 */
$obpe_pro = $obpe->getProperties();
$obpe_pro->setCreator('midoks')//设置创建者
->setLastModifiedBy('2013/2/16 15:00')//设置时间
->setTitle('data')//设置标题
->setSubject('beizhu')//设置备注
->setDescription('miaoshu')//设置描述
->setKeywords('keyword')//设置关键字 | 标记
->setCategory('catagory');//设置类别/* 设置宽度 */
//$obpe->getActiveSheet()->getColumnDimension()->setAutoSize(true);
//$obpe->getActiveSheet()->getColumnDimension('B')->setWidth(10);//设置当前sheet索引,用于后续的内容操作
//一般用在对个Sheet的时候才需要显示调用
//缺省情况下,PHPExcel会自动创建第一个SHEET被设置SheetIndex=0
//设置SHEET
$obpe->setactivesheetindex(0);
//写入多行数据
foreach($mulit_arr as $k=>$v){
$k = $k+1;
/* @func 设置列 */
$obpe->getactivesheet()->setcellvalue('A'.$k, $v[0]);
$obpe->getactivesheet()->setcellvalue('B'.$k, $v[1]);
$obpe->getactivesheet()->setcellvalue('C'.$k, $v[2]);
}//创建一个新的工作空间(sheet)
$obpe->createSheet();
$obpe->setactivesheetindex(1);
//写入多行数据
foreach($mulit_arr as $k=>$v){
$k = $k+1;
/* @func 设置列 */
$obpe->getactivesheet()->setcellvalue('A'.$k, $v[0]);
$obpe->getactivesheet()->setcellvalue('B'.$k, $v[1]);
$obpe->getactivesheet()->setcellvalue('C'.$k, $v[2]);
}//写入类容
$obwrite = PHPExcel_IOFactory::createWriter($obpe, 'Excel5');
//ob_end_clean();
//保存文件
$obwrite->save('mulit_sheet.xls');//or 以下方式
/*******************************************
直接在浏览器输出
*******************************************/
/**
header('Pragma: public');
header('Expires: 0');
header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
header('Content-Type:application/force-download');
header('Content-Type:application/vnd.ms-execl');
header('Content-Type:application/octet-stream');
header('Content-Type:application/download');
header("Content-Disposition:attachment;filename='mulit_sheet.xls'");
header('Content-Transfer-Encoding:binary');
$obwrite->save('php://output');
?>
*/
?>

###读取多个Sheet



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
68
69
70
71
72
73
74
75
76
77
78
79
80
<?php
/**
*@读取数据
*1.bug对日期格式读取错误进行了改进
*2.多个sheets取值
*/
set_include_path('.'.get_include_path().PATH_SEPARATOR.dirname(__FILE__).'/PHPExecl/');
/* @func 引入类 */
require 'PHPExcel.php';

//$obpe = new PHPExcel();
//var_dump($obpe);

//设置使用内容大小
ini_set('memory_limit','512M');

/**
*@func 读取execl内容的数据
*@param $fn Execl文件
*@param int $sheet 第几个sheet 默认0(当前)
*/
function read_execl($fn ,$sheet=0){
if(!file_exists($fn)){
exit($fn.'文件不存在');
}//实例化处理对象
$reader = new PHPExcel_Reader_Excel5();
if(!$reader->canRead($fn)){
$reader = new PHPExcel_Reader_Excel5();
}else if(!$reader->canRead($fn)){
echo 'No Excel';
return;
}
ob_end_clean();
//加载处理的文件
$execl = $reader->load($fn);
$csheet = $execl->getSheet($sheet);//var_dump($csheet);
//取得共有多少列,若不使用此静态方法,获得的$col是文件列的最大的英文大写字母
$cols=PHPExcel_Cell::columnIndexFromString($csheet->getHighestColumn());//多少行
$rows = $csheet->getHighestRow();
//var_dump($rows, $cols);//读取数据
$result = array();
for($row=1; $row<=$rows; $row++){
for($col=0; $col<$cols; $col++){
$cell =$csheet->getCellByColumnAndRow($col, $row);
$cellstyleformat = $cell->getStyle($cell->getCoordinate())->getNumberFormat();//1.7.8可用
//$cellstyleformat = $cell->getStyle($cell->getCoordinate())->getNumberFormat();//1.7.9可用
//日期格式的判断
$value = $cell->getValue();//获取值
//var_dump($value);
//return $value;
$formatcode=$cellstyleformat->getFormatCode();
//var_dump(PHPExcel_Shared_Date::ExcelToPHP($value));
if (preg_match('/^(/[/$[A-Z]*-[0-9A-F]*/])*[hmsdy]/i', $formatcode)){
//var_dump(PHPExcel_Shared_Date::ExcelToPHP($value));
$value = gmdate("Y-m-d", PHPExcel_Shared_Date::ExcelToPHP($value));
}else{
$value = PHPExcel_Style_NumberFormat::toFormattedString($value, $formatcode);
//var_dump('test:'.$value);
}
$result[$row][$col] = $value;
}
}
//var_dump($result);
//exit;
return $result;
}

echo '
';
$fn = 'mulit_sheet.xls';
$data = read_execl($fn, 1);
var_dump($data);
?>

以上是使用PHPExcel对Execl多个sheet读写的全部内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有其他相关内容,欢迎继续使用右上角搜索按钮进行搜索phpexcel , 使用 , execl , 读写 , sheet 多个 ,以便于您获取更多的相关知识。