phpexcel类导出数据 导入数据

1、引入excel类以及文件(可以去这里下载:http://pan.baidu.com/s/1hrLEzsw(附加代码示例))。
文件目录:
php <wbr>生成excel <wbr>下载(附详细代码)

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",
       );
}


数据库显示:
php <wbr>生成excel <wbr>下载(附详细代码)

代码中我仅获取了10条记录做测试。效果见下图:

php <wbr>生成excel <wbr>下载(附详细代码)

这里的A1/B1/C1对饮headerJsonData中的T0,T1,T2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值