熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> PHP編程 >> 正文

基於php導出到Excel或CSV的詳解(附utf8、gbk 編碼轉換)

2013-11-15 12:28:01  來源: PHP編程 

  php導入到excel亂碼是因為utf編碼在xp系統不支持所有utf編碼轉碼一下就完美解決了
utf編碼案例
Php代碼

復制代碼 代碼如下:
<?php
header("ContentType: application/vndmsexcel; charset=UTF");
header("Pragma: public");
header("Expires: ");
header("CacheControl: mustrevalidate postcheck= precheck=");
header("ContentType: application/forcedownload");
header("ContentType: application/octetstream");
header("ContentType: application/download");
header("ContentDisposition: attachment;filename=xls ");
header("ContentTransferEncoding: binary ");
?>

  
Php代碼

復制代碼 代碼如下:
<?
$filename="php導入到excelutf編碼";
$filename=iconv("utf" "gb" $filename);
echo $filename;
?>

  
gbk編碼案例
Php代碼

復制代碼 代碼如下:
<?php
header("ContentType: application/vndmsexcel; charset=UTF");
header("Pragma: public");
header("Expires: ");
header("CacheControl: mustrevalidate postcheck= precheck=");
header("ContentType: application/forcedownload");
header("ContentType: application/octetstream");
header("ContentType: application/download");
header("ContentDisposition: attachment;filename=xls ");
header("ContentTransferEncoding: binary ");
?>

  
Php代碼

復制代碼 代碼如下:
<?
$filename="php導入到excelutf編碼";
echo $filename;
?>

  
訪問網站的時候就下載到excel裡面
要弄單元格區別的話
用table表格做網頁的就可以了
====================== 其他方法 =============================
制作簡單 Excel

復制代碼 代碼如下:
<?php
header("Contenttype:application/vndmsexcel");
header("ContentDisposition:filename=phpexcelxls");

echo "A/t B/t C/n";
echo "A/t B/t C/n";
echo "A/t B/t C/n";
echo "A/t B/t C/n";
?>

  
制作簡單 CSV

復制代碼 代碼如下:
<?php
$action =$_GET[action];
if ($action==make){
$fp = fopen("demo_csvcsv""a"); //打開csv文件如果不存在則創建
$title = array("First_Name""Last_Name""Contact_Email""Telephone"); //第一行數據
$data_ = array("""""""");
$data_ = array("""Last_Name""Contact_Email""Telephone");
$title = implode(""$title); //用 分割成字符串
$data_ = implode(""$data_); // 用 分割成字符串
$data_ = implode(""$data_); // 用 分割成字符串
$data_str =$title"/r/n"$data_"/r/n"$data_"/r/n"; //加入換行符
fwrite($fp$data_str); // 寫入數據
fclose($fp); //關閉文件句柄
echo "生成成功";
}
echo "<br>";
echo "<a >生成csv文件</a>";
?>

  
也可以做一個封閉函數
封閉函數一

復制代碼 代碼如下:
function exportToCsv($csv_data $filename = exportcsv) {
$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_enclosedstr_replace($csv_enclosed $csv_escaped $csv_enclosed $v)$csv_enclosed$csv_separator;
} // end for

$tmp_str = substr($tmp_str );
$schema_insert = $tmp_str;
$out = $schema_insert;
$out = $csv_terminated;
} // end while
header("CacheControl: mustrevalidate postcheck= precheck=");
header("ContentLength: " strlen($out));
header("Contenttype: text/xcsv");
header("ContentDisposition:filename=$filename");
echo $out;
}
/*
$csv_data = array(array(Name Address));
array_push($csv_data array($row[name]$row[address]));

exportToCsv($csv_datanew_filecsv);
*/

  
封閉函數二

復制代碼 代碼如下:
<?
/**
* Simple class to properly output CSV data to clients PHP 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(/"(+)"/ ""$"" $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 ContentType header and attachment for the CSV outpu
*
* @param string $name
* @return void
*/
public function headers($name)
{
header(ContentType: application/csv);
header("Contentdisposition: attachment; filename={$name}csv");
}
}
/*
//$data = array(array("one""two""three") array());
$data[] = array("one""two""three");
$data[] = array();
$csv = new CSV_Writer($data);
$csv>headers(test);
$csv>output();
*/

  
使用excel類

復制代碼 代碼如下:
<?php
require_once Spreadsheet/Writerphp;
$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();
$workbook>setBIFFInputEncoding(UTF);
$worksheet =& $workbook>addWorksheet("Sheet");
$data[]= array(idusernamecompanyemailmobdaytimeintent);
$data[] = array(老梁**工作室jbnet*time()y);
$total_row = count($data);
$total_col = count($data[]);
for ($row = ; $row < $total_row; $row ++) {
for ($col = ; $col < $total_col; $col ++) {
$worksheet>writeString($row $col $data[$row][$col]); // 在 sheet 中寫入數據
}
}
/*
$worksheet =& $workbook>addWorksheet("Sheet");
$data[]= array(idusernamecompanyemailmobdaytimeintent);
$data[] = array(老梁**工作室jbnet*time()y);
$total_row = count($data);
$total_col = count($data[]);
for ($row = ; $row < $total_row; $row ++) {
for ($col = ; $col < $total_col; $col ++) {
$worksheet>writeString($row $col $data[$row][$col]); // 在 sheet 中寫入數據
}
}
*/
$workbook>close(); // 完成下載
?>

  
類二
函數說明
讀取Excel文件
function Read_Excel_File($ExcelFile$Result)
$ExcelFile Excel文件名
$Result 返回的結果
函數返回值 正常返回否則返回錯誤信息
返回的值數組
$result[sheet名][行][列] 的值為相應Excel Cell的值

建立Excel文件
function Create_Excel_File($ExcelFile$Data)
$ExcelFile Excel文件名
$Data Excel表格數據
請把函數寫在PHP腳本的開頭

復制代碼 代碼如下:
<?
require "excel_classphp";
Read_Excel_File("Bookxls"$return);
for ($i=;$i<count($return[Sheet]);$i++)
{
for ($j=;$j<count($return[Sheet][$i]);$j++)
{
echo $return[Sheet][$i][$j]"|";
}
echo "<br>";
}
?>

  

復制代碼 代碼如下:
<?
require "excel_classphp";
Read_Excel_File("Bookxls"$return);
Create_Excel_File("dddxls"$return[Sheet]);
?>
From:http://tw.wingwit.com/Article/program/PHP/201311/21008.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.