首页 > 编程 > PHP > 正文

基于php导出到Excel或CSV的方法

2020-03-22 17:51:47
字体:
来源:转载
供稿:网友
本篇文章是对php导出到Excel或CSV(附utf8、gbk 编码转换)进行了详细的分析介绍,需要的朋友参考下

php导入到excel乱码是因为utf8编码在html' target='_blank'>xp系统不支持所有utf8编码转码一下就完美解决了
utf-8编码案例
Php代码

 ?php header( Content-Type: application/vnd.ms-excel; charset=UTF-8 header( Pragma: public header( Expires: 0 header( Cache-Control: must-revalidate, post-check=0, pre-check=0 header( Content-Type: application/force-download header( Content-Type: application/octet-stream header( Content-Type: application/download header( Content-Disposition: attachment;filename=11.xls header( Content-Transfer-Encoding: binary ? 

Php代码

 ? $filename= php导入到excel-utf-8编码 $filename=iconv( utf-8 , gb2312 , $filename); echo $filename; ? 

gbk编码案例
Php代码

 ?php header( Content-Type: application/vnd.ms-excel; charset=UTF-8 header( Pragma: public header( Expires: 0 header( Cache-Control: must-revalidate, post-check=0, pre-check=0 header( Content-Type: application/force-download header( Content-Type: application/octet-stream header( Content-Type: application/download header( Content-Disposition: attachment;filename=11.xls header( Content-Transfer-Encoding: binary ? 

Php代码

0. ? 0.$filename= php导入到excel-utf-8编码 0.echo $filename; 0.? 

访问网站的时候就下载到excel里面
要弄单元格区别的话
用table表格做网页的就可以了
====================== 其他方法 =============================
1、制作简单 Excel

0. ?php 0.header( Content-type:application/vnd.ms-excel 0.header( Content-Disposition:filename=php2excel.xls 0.echo A1/t B1/t C1/n 0.echo A2/t B2/t C2/n 0.echo A3/t B3/t C3/n 0.echo A4/t B4/t C4/n 0.? 

2、制作简单 CSV

 ?php$action =$_GET[ action if ($action== make ){ $fp = fopen( demo_csv.csv , a //打开csv文件,如果不存在则创建 $title = array( First_Name , Last_Name , Contact_Email , Telephone //第一行数据 $data_1 = array( 42343 , 423432 , 4234 , 4234  $data_2 = array( 4234 , Last_Name , Contact_Email , Telephone  $title = implode( , ,$title); //用 分割成字符串 $data_1 = implode( , ,$data_1); // 用 分割成字符串 $data_2 = implode( , ,$data_2); // 用 分割成字符串 $data_str =$title. /r/n .$data_1. /r/n .$data_2. /r/n //加入换行符 fwrite($fp,$data_str); // 写入数据 fclose($fp); //关闭文件句柄 echo 生成成功 echo br echo a href= ?action=make 生成csv文件 /a ? 

也可以做一个封闭函数
封闭函数一:

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 Galesclass 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类

 ?phprequire_once Spreadsheet/Writer.php $workbook = new Spreadsheet_Excel_Writer();/* 生成 CSV$filename = date( YmdHis ). .csv $workbook- 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 $total_row; $row ++) { for ($col = 0; $col $total_col; $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 $total_row; $row ++) { for ($col = 0; $col $total_col; $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 count($return[Sheet1]);$i++) for ($j=0;$j count($return[Sheet1][$i]);$j++) echo $return[Sheet1][$i][$j]. |  echo br ? 

例2:

 ?require excel_class.php Read_Excel_File( Book1.xls ,$return);Create_Excel_File( ddd.xls ,$return[Sheet1]);? 

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP !

相关推荐:

ThinkPHP利用PHPExcel实现Excel数据的导入导出

以上就是基于php导出到Excel或CSV的方法的详细内容,PHP教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表