您现在的位置: 首页php+mysql>正文
php导入导出excle(csv)格式
2012年06月18日 php+mysql 暂无评论

最近在开发一个项目,需要用导出excel文件这个功能,于是结合网上搜索到的资料及自己的体会,用以下方法实现了。

1、phpexcel类方法

<?php

// load library
require 'php-excel.class.php';

// create a simple 2-dimensional array
$data = array(
        1 => array ('Name', 'Surname'),
        array('Schwarz', 'Oliver'),
        array('Test', 'Peter')
        );

// generate file (constructor parameters are optional)
$xls = new Excel_XML('UTF-8', false, 'My Test Sheet');
$xls->addArray($data);
$xls->generateXML('my-test');

?>

下载链接:http://php-excel.googlecode.com/files/php-excel-v1.1-20090910.zip

说明:这个是导出excel文件用的。

2、一个phper自用的函数

导出到CSV:

<?php
export_csv();

/**
 *导出到CSV文件
 */
function export_csv()
{
    $filename = date('YmdHis').".csv";
 header("Content-type:text/csv");
    header("Content-Disposition:attachment;filename=".$filename);
    header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
    header('Expires:0');
    header('Pragma:public');
    echo array_to_string(get_export_data());
}
/**
 *导出数据转换
 * @param $result
 */
function array_to_string($result)
{
    if(empty($result)){
        return i("没有符合您要求的数据!^_^");
    }
    $data;
    $size_result = sizeof($result);
    for($i = 0 ; $i < $size_result ;  $i++) {
        $data .= i($result[$i]['name']).','.i($result[$i]['option'])."\n";
    }
    return $data;
}
/**
 *获取导出报表的数据
 * @return
 */
function get_export_data()
{
 $link = mysql_connect('localhost','root','root') or die(mysql_error());
 mysql_select_db('joomla');
 $sql = 'select a.name,a.option from jos_components a limit 10';
 $result = mysql_query($sql);
 $res = array();
 $i = 0;
 while($row = mysql_fetch_array($result)){
  $res[$i][name] = $row[name];
  $res[$i][option] = $row[option];
  $i++; 
 } 
    return $res;
}
/**
 *编码转换
 * @param <type> $strInput
 * @return <type>
 */
function i($strInput)
{
    return iconv('utf-8','gb2312',$strInput);//页面编码为utf-8时使用,否则导出的中文为乱码
}
?>

导入csv:

<?php
header("Content-type:text/html;charset=utf-8");
//定义文件路径、文件名
$file = 'test.csv';

//打开csv文件
$handle = fopen($file,'r');

//循环读取CSV文件内容,并返回
//利用php函数fgetcsv,第一个参数为文件句柄,第二个为读取行数,第三个函数为字段分界符,第四个参数为字段环绕符
function inputCsv($handle){
 $out = array();
 $n = 0;
 while($data = fgetcsv($handle,10000)){
  $num = count($data);
  for($i=0;$i<$num;$i++){
   $out[$n][$i] = $data[$i];
  }
  $n++;
 }
 return $out;
}
$result = inputCsv($handle);
for($i=0;$i<count($result);$i++){
 for($j=0;$j<count($result[$i]);$j++){
  echo iconv('gb2312','utf-8',$result[$i][$j]).'&nbsp;&nbsp;'; //页面编码为utf-8时使用,否则中文会出现乱码
 }
 echo '<br />';
}
?>

给我留言