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

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

内容导读

收集整理的这篇技术教程文章主要介绍了基于php导出到Excel或CSV的方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含6961字,纯文字阅读大概需要10分钟

内容图文

本篇文章是对php导出到Excel或CSV(附utf8、gbk 编码转换)进行了详细的分析介绍,需要的朋友参考下

php导入到excel乱码是因为utf8编码在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.
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 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类

<?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的方法的详细内容,更多请关注Gxl网其它相关文章!

内容总结

以上是为您收集整理的基于php导出到Excel或CSV的方法全部内容,希望文章能够帮你解决基于php导出到Excel或CSV的方法所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。

内容备注

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。


本文关键词:

联系我们

在线咨询:点击这里给我发消息

邮件:w420220301@qq.com