您好,欢迎访问一九零五行业门户网

基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)_PHP教程

php导入到excel乱码是因为utf8编码在xp系统不支持所有utf8编码转码一下就完美解决了
utf-8编码案例
php代码
复制代码 代码如下:
php代码
复制代码 代码如下:
$filename=php导入到excel-utf-8编码;   
$filename=iconv(utf-8, gb2312, $filename);   
echo $filename;   
?>
gbk编码案例
php代码
复制代码 代码如下:
php代码
复制代码 代码如下:
0.   
0.$filename=php导入到excel-utf-8编码;   
0.echo $filename;   
0.?>
访问网站的时候就下载到excel里面
要弄单元格区别的话
用table表格做网页的就可以了
====================== 其他方法 =============================
1、制作简单 excel
复制代码 代码如下:
0.
2、制作简单 csv 
复制代码 代码如下:
也可以做一个封闭函数:
封闭函数一:
复制代码 代码如下:
function exporttocsv($csv_data, $filename = 'export.csv') {
    $csv_terminated = /n;
    $csv_separator = ,;
    $csv_enclosed = '';
    $csv_escaped = //;
    // gets the data from the database
    $schema_insert = '';
    $out = '';
    // format the data
    foreach ($csv_data as $row)
    {
        $schema_insert = '';
        $fields_cnt = count($row);
        //printr($row);
        $tmp_str = '';
        foreach($row as $v)
        {
            $tmp_str .= $csv_enclosed.str_replace($csv_enclosed, $csv_escaped . $csv_enclosed, $v).$csv_enclosed.$csv_separator;
        } // end for
$tmp_str = substr($tmp_str, 0, -1);
        $schema_insert .= $tmp_str;
        $out .= $schema_insert;
        $out .= $csv_terminated;
    } // end while
    header(cache-control: must-revalidate, post-check=0, pre-check=0);
    header(content-length: . strlen($out));
    header(content-type: text/x-csv);
    header(content-disposition:filename=$filename);
    echo $out;
}
/*
$csv_data = array(array('name', 'address'));
array_push($csv_data, array($row['name'],$row['address']));
...
exporttocsv($csv_data,'new_file.csv');
*/
封闭函数二:
复制代码 代码如下:
/**
 * simple class to properly output csv data to clients. php 5 has a built
 * in method to do the same for writing to files (fputcsv()), but many times
 * going right to the client is beneficial.
 *
 * @author jon gales
 */
class csv_writer {
    public $data = array();
    public $deliminator;
    /**
     * loads data and optionally a deliminator. data is assumed to be an array
     * of associative arrays.
     *
     * @param array $data
     * @param string $deliminator
     */
    function __construct($data, $deliminator = ,)
    {
        if (!is_array($data))
        {
            throw new exception('csv_writer only accepts data as arrays');
        }
        $this->data = $data;
        $this->deliminator = $deliminator;
    }
    private function wrap_with_quotes($data)
    {
        $data = preg_replace('/(.+)/', '$1', $data);
        return sprintf('%s', $data);
    }
    /**
     * echos the escaped csv file with chosen delimeter
     *
     * @return void
     */
    public function output()
    {
        foreach ($this->data as $row)
        {
            $quoted_data = array_map(array('csv_writer', 'wrap_with_quotes'), $row);
            echo sprintf(%s/n, implode($this->deliminator, $quoted_data));
        }
    }
    /**
     * sets proper content-type header and attachment for the csv outpu
     *
     * @param string $name
     * @return void
     */
    public function headers($name)
    {
        header('content-type: application/csv');
        header(content-disposition: attachment; filename={$name}.csv);
    }
}
/*
//$data = array(array(one,two,three), array(4,5,6));
$data[] = array(one,two,three);
$data[] = array(4,5,6);
$csv = new csv_writer($data);
$csv->headers('test');
$csv->output();
*/
3. 使用excel类
复制代码 代码如下:
send($filename); // 发送 excel 文件名供下载
*/
// 生成 excel
$filename = date('ymdhis').'.xls';
$workbook->send($filename); // 发送 excel 文件名供下载
$workbook->setversion(8);
$workbook->setbiff8inputencoding('utf-8');
$worksheet =& $workbook->addworksheet(sheet-1);
$data[]= array('id','username','company','email','mob','daytime','intent');
$data[] = array(1,'老梁','**工作室','jb51.net','1363137966*',time(),'y');
$total_row = count($data);
$total_col = count($data[0]);
for ($row = 0; $row    for ($col = 0; $col   $worksheet->writestring($row, $col, $data[$row][$col]); // 在 sheet-1 中写入数据
   }
}
/*
$worksheet =& $workbook->addworksheet(sheet-2);
$data[]= array('id','username','company','email','mob','daytime','intent');
$data[] = array(1,'老梁','**工作室','jb51.net','1363137966*',time(),'y');
$total_row = count($data);
$total_col = count($data[0]);
for ($row = 0; $row    for ($col = 0; $col   $worksheet->writestring($row, $col, $data[$row][$col]); // 在 sheet-2 中写入数据
   }
}
*/
$workbook->close(); // 完成下载
?>
类二
-----函数说明
读取excel文件
function read_excel_file($excelfile,$result)
$excelfile    excel文件名
$result        返回的结果
函数返回值    正常返回0,否则返回错误信息
返回的值数组
$result[sheet名][行][列] 的值为相应excel cell的值
建立excel文件   
function create_excel_file($excelfile,$data)
$excelfile    excel文件名
$data        excel表格数据
请把函数写在php脚本的开头 
例1:
复制代码 代码如下:
require excel_class.php;
read_excel_file(book1.xls,$return);
for ($i=0;$i{
    for ($j=0;$j    {
        echo $return[sheet1][$i][$j].|;
    }
    echo
;
}
?>
例2:
复制代码 代码如下:
require excel_class.php;
read_excel_file(book1.xls,$return);
create_excel_file(ddd.xls,$return[sheet1]);
?>
http://www.bkjia.com/phpjc/327836.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/327836.htmltecharticlephp导入到excel乱码是因为utf8编码在xp系统不支持所有utf8编码转码一下就完美解决了 utf-8编码案例 php代码 复制代码 代码如下: ?php header(cont...
其它类似信息

推荐信息