PHPExcel导出导入

PHPExcel下载
下载PHPExcel中的Classes库,并在Classes目录下新建PHP文件

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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/**  

* 数据导出

* @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');



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';

}



//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
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
89
90
91
92
93


/**

* 数据导入

* @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;

}

0%