phpexcel类导出数据 导入数据

来源:互联网 发布:天谕角色数据 编辑:程序博客网 时间:2024/06/07 00:40
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
原创粉丝点击