基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)
发布时间:2020-12-13 06:27:23 所属栏目:PHP教程 来源:网络整理
导读:php导入到excel乱码是因为utf8编码在xp系统不支持所有utf8编码转码一下就完美解决了 utf-8编码案例 Php代码 div class="codetitle" a style="CURSOR: pointer" data="74280" class="copybut" id="copybut74280" onclick="doCopy('code74280')" 代码如下: div
php导入到excel乱码是因为utf8编码在xp系统不支持所有utf8编码转码一下就完美解决了 utf-8编码案例Php代码<div class="codetitle"><a style="CURSOR: pointer" data="74280" class="copybut" id="copybut74280" onclick="doCopy('code74280')"> 代码如下:<div class="codebody" id="code74280"> <?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代码 <div class="codetitle"><a style="CURSOR: pointer" data="65994" class="copybut" id="copybut65994" onclick="doCopy('code65994')"> 代码如下:<div class="codebody" id="code65994"> <? $filename="php导入到excel-utf-8编码"; $filename=iconv("utf-8","gb2312",$filename); echo $filename; ?> gbk编码案例Php代码<div class="codetitle"><a style="CURSOR: pointer" data="74280" class="copybut" id="copybut74280" onclick="doCopy('code74280')"> 代码如下:<div class="codebody" id="code74280"> <?php header("Content-Type: application/vnd.ms-excel; charset=UTF-8"); header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate,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代码 <div class="codetitle"><a style="CURSOR: pointer" data="83489" class="copybut" id="copybut83489" onclick="doCopy('code83489')"> 代码如下:<div class="codebody" id="code83489"> 0.<? 0.$filename="php导入到excel-utf-8编码"; 0.echo $filename; 0.?> 访问网站的时候就下载到excel里面 要弄单元格区别的话 用table表格做网页的就可以了 ====================== 其他方法 ============================= 1、制作简单 Excel <div class="codetitle"><a style="CURSOR: pointer" data="64926" class="copybut" id="copybut64926" onclick="doCopy('code64926')"> 代码如下:<div class="codebody" id="code64926">0.<?php 0.header("Content-type:application/vnd.ms-excel"); 0.header("Content-Disposition:filename=php2excel.xls"); 0. 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 <div class="codetitle"><a style="CURSOR: pointer" data="47173" class="copybut" id="copybut47173" onclick="doCopy('code47173')"> 代码如下:<div class="codebody" id="code47173"><?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","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 " "; echo "生成csv文件"; ?> 也可以做一个封闭函数: 封闭函数一: <div class="codetitle"><a style="CURSOR: pointer" data="73876" class="copybut" id="copybut73876" onclick="doCopy('code73876')"> 代码如下:<div class="codebody" id="code73876">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,-1); $schema_insert .= $tmp_str; $out .= $schema_insert; $out .= $csv_terminated; } // end while header("Cache-Control: must-revalidate,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'); / 封闭函数二: <div class="codetitle"><a style="CURSOR: pointer" data="93766" class="copybut" id="copybut93766" onclick="doCopy('code93766')"> 代码如下:<div class="codebody" id="code93766"><? / 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","three"); $data[] = array(4,6); $csv = new CSV_Writer($data); $csv->headers('test'); $csv->output(); / 3. 使用excel类<div class="codetitle"><a style="CURSOR: pointer" data="60654" class="copybut" id="copybut60654" onclick="doCopy('code60654')"> 代码如下:<div class="codebody" id="code60654"><?php require_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,'老梁','*工作室','52php.cn','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',$data[$row][$col]); // 在 sheet-2 中写入数据 } } / $workbook->close(); // 完成下载 ?> 类二 读取Excel文件 |