phpexcel类导出数据 导入数据
2017-11-13 16:45
429 查看
1、引入excel类以及文件(可以去这里下载:http://pan.baidu.com/s/1hrLEzsw(附加代码示例))。
文件目录:
![](http://s4.sinaimg.cn/mw690/00348ltKty6XkmpxuHV63&690)
createDownExcel.php代码示例:
require_once 'PHPExcel.php';
//用于phpExcel
require_once 'PHPExcel/Writer/Excel2007.php';
//用于输出excel文档
require_once 'PHPExcel/RichText.php';
require_once 'PHPExcel/Worksheet.php';
$mdb = mysql_connect('127.0.0.1','root','')
or
die("连接数据库失败!
");
$db = mysql_select_db('test', $mdb)
or
die("选择db失败
");
//echo "connect success";
// 避免中文出现乱码
mysql_query("SET NAMES 'UTF8'");
$jsonData = getData();//获取需要生成excel的数据
$rand = microtime();//定义文件名
$filePath = "saveExcel/$rand.xlsx";//存放目录+文件
$tabelJsonHeader = json_encode(array(//定义excel文件头部,excel中需要多少就在这里定义多少对应关系
0=>"Id",//自增索引,用于根据此键获取对应的数据库值,数据库的键或者重命名的键(字段)
"T0"=>"Id",//设置表头值99999+自增索引
1=>"Name",
"T1"=>"名称",
2=>"Pid",
"T2"=>"父即ID"
));
$url = createEXCEL($filePath,$jsonData,$tabelJsonHeader);//在PHPExcel.php中配置PHPExcel文件包含路径
echo $url;//此url如果为空说明失败,成功,则直接跳转此路径即可
//获取数据
function getData(){
$sql
= "select * from `china` limit 0,10";
$query
= mysql_query($sql);
while($rs
= mysql_fetch_assoc($query)){
$row[]
= $rs;
}
return
json_encode($row);
}
//生成excel
function createEXCEL($filePath,$jsonData,$tableJsonHeader){
$objPHPExcel
= new PHPExcel();
$sheet
= $objPHPExcel->getSheet(0);
$dataArr
= json_decode($jsonData,true);
if(empty($dataArr)){
return
"";
}
$tableHeaderArr
= json_decode($tableJsonHeader,true);
$c
= count($dataArr);
$l
= count($tableHeaderArr)/2;//数字索引和关联索引实际是表示一个值
$AZ
= setAZ();
for($m=0;$m<$l;$m++){//表头
$A
= $AZ[$m]."1";
$sheet
->setCellValue($A, $tableHeaderArr["T".$m]);//
}
for($i=0;$i<$c;$i++){//行
for($m=0;$m<$l;$m++){//列
//$sheet
->setCellValue($AZ[$m].($i+2), $dataArr[$i][$tableHeaderArr[$m]]);//会将00002转换成2
$sheet
->setCellValueExplicit($AZ[$m].($i+2), $dataArr[$i][$tableHeaderArr[$m]],PHPExcel_Cell_DataType::TYPE_STRING);//设置格式
}
}
$objWriter
= new PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter->save($filePath);
return
$filePath;
}
//暂时使用此方法,没有找到更简便的生成A-Z..的方式
function setAZ(){
return
array(
0=>"A",
1=>"B",
2=>"C",
3=>"D",
4=>"E",
5=>"F",
6=>"G",
7=>"H",
8=>"I",
9=>"J",
10=>"K",
11=>"L",
12=>"M",
13=>"N",
14=>"O",
15=>"P",
16=>"Q",
17=>"R",
18=>"S",
19=>"T",
20=>"U",
21=>"V",
22=>"W",
23=>"X",
24=>"Y",
25=>"Z",
26=>"AA",
27=>"AB",
28=>"AC",
29=>"AD",
30=>"AE",
31=>"AF",
32=>"AG",
33=>"AH",
34=>"AI",
35=>"AJ",
36=>"AK",
37=>"AL",
38=>"AM",
39=>"AN",
40=>"AO",
41=>"AP",
42=>"AQ",
43=>"AR",
44=>"AS",
45=>"AT",
46=>"AU",
47=>"AV",
48=>"AW",
49=>"AX",
50=>"AY",
51=>"AZ",
);
}
数据库显示:
![](http://s5.sinaimg.cn/mw690/00348ltKty6XkmAgsq844&690)
代码中我仅获取了10条记录做测试。效果见下图:
![](http://s14.sinaimg.cn/mw690/00348ltKty6XkmGCNVbcd&690)
这里的A1/B1/C1对饮headerJsonData中的T0,T1,T2
文件目录:
createDownExcel.php代码示例:
require_once 'PHPExcel.php';
//用于phpExcel
require_once 'PHPExcel/Writer/Excel2007.php';
//用于输出excel文档
require_once 'PHPExcel/RichText.php';
require_once 'PHPExcel/Worksheet.php';
$mdb = mysql_connect('127.0.0.1','root','')
or
die("连接数据库失败!
");
$db = mysql_select_db('test', $mdb)
or
die("选择db失败
");
//echo "connect success";
// 避免中文出现乱码
mysql_query("SET NAMES 'UTF8'");
$jsonData = getData();//获取需要生成excel的数据
$rand = microtime();//定义文件名
$filePath = "saveExcel/$rand.xlsx";//存放目录+文件
$tabelJsonHeader = json_encode(array(//定义excel文件头部,excel中需要多少就在这里定义多少对应关系
0=>"Id",//自增索引,用于根据此键获取对应的数据库值,数据库的键或者重命名的键(字段)
"T0"=>"Id",//设置表头值99999+自增索引
1=>"Name",
"T1"=>"名称",
2=>"Pid",
"T2"=>"父即ID"
));
$url = createEXCEL($filePath,$jsonData,$tabelJsonHeader);//在PHPExcel.php中配置PHPExcel文件包含路径
echo $url;//此url如果为空说明失败,成功,则直接跳转此路径即可
//获取数据
function getData(){
$sql
= "select * from `china` limit 0,10";
$query
= mysql_query($sql);
while($rs
= mysql_fetch_assoc($query)){
$row[]
= $rs;
}
return
json_encode($row);
}
//生成excel
function createEXCEL($filePath,$jsonData,$tableJsonHeader){
$objPHPExcel
= new PHPExcel();
$sheet
= $objPHPExcel->getSheet(0);
$dataArr
= json_decode($jsonData,true);
if(empty($dataArr)){
return
"";
}
$tableHeaderArr
= json_decode($tableJsonHeader,true);
$c
= count($dataArr);
$l
= count($tableHeaderArr)/2;//数字索引和关联索引实际是表示一个值
$AZ
= setAZ();
for($m=0;$m<$l;$m++){//表头
$A
= $AZ[$m]."1";
$sheet
->setCellValue($A, $tableHeaderArr["T".$m]);//
}
for($i=0;$i<$c;$i++){//行
for($m=0;$m<$l;$m++){//列
//$sheet
->setCellValue($AZ[$m].($i+2), $dataArr[$i][$tableHeaderArr[$m]]);//会将00002转换成2
$sheet
->setCellValueExplicit($AZ[$m].($i+2), $dataArr[$i][$tableHeaderArr[$m]],PHPExcel_Cell_DataType::TYPE_STRING);//设置格式
}
}
$objWriter
= new PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter->save($filePath);
return
$filePath;
}
//暂时使用此方法,没有找到更简便的生成A-Z..的方式
function setAZ(){
return
array(
0=>"A",
1=>"B",
2=>"C",
3=>"D",
4=>"E",
5=>"F",
6=>"G",
7=>"H",
8=>"I",
9=>"J",
10=>"K",
11=>"L",
12=>"M",
13=>"N",
14=>"O",
15=>"P",
16=>"Q",
17=>"R",
18=>"S",
19=>"T",
20=>"U",
21=>"V",
22=>"W",
23=>"X",
24=>"Y",
25=>"Z",
26=>"AA",
27=>"AB",
28=>"AC",
29=>"AD",
30=>"AE",
31=>"AF",
32=>"AG",
33=>"AH",
34=>"AI",
35=>"AJ",
36=>"AK",
37=>"AL",
38=>"AM",
39=>"AN",
40=>"AO",
41=>"AP",
42=>"AQ",
43=>"AR",
44=>"AS",
45=>"AT",
46=>"AU",
47=>"AV",
48=>"AW",
49=>"AX",
50=>"AY",
51=>"AZ",
);
}
数据库显示:
代码中我仅获取了10条记录做测试。效果见下图:
这里的A1/B1/C1对饮headerJsonData中的T0,T1,T2
相关文章推荐
- PHP导入Excel和导出数据为Excel文件
- phpexcle在thinkphp3.2.3下的导入导出数据
- PHP将Excel导入数据库及数据库数据导出至Excel的方法
- phpadmin如何导入导出大数据文件及php.ini参数修改
- 使用PHP导入Excel和导出数据为Excel文件
- PHP使用PHPExcel导出,导入数据总结
- php 导出数据到excel类
- php数据导入导出之excel(csv文件)
- phpexcle 数据导入导出
- 使用PHP导入Excel和导出数据为Excel文件
- PHP将Excel导入数据库及数据库数据导出至Excel的方法
- 使用PHP导入Excel和导出数据为Excel文件
- 用php导入10W条+ 级别的csv大文件数据到mysql。导出10W+级别数据到csv文件
- php数据导入导出之excel(csv文件)
- PHP导入Excel和导出数据为Excel文件
- 用php导入10W条+ 级别的csv大文件数据到mysql。导出10W+级别数据到csv文件
- Zend Framework框架中用PHP实现数据的导入导出
- php数据导入导出之excel(csv文件)
- 转--使用PHP导入Excel和导出数据为Excel文件
- PHP使用PHPexcel导入导出数据的方法