您的位置:首页 > 编程语言 > PHP开发

phpexcel类导出数据 导入数据

2017-11-13 16:45 429 查看
1、引入excel类以及文件(可以去这里下载:http://pan.baidu.com/s/1hrLEzsw(附加代码示例))。

文件目录:





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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: