一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - 基于php導出到Excel或CSV的詳解(附utf8、gbk 編碼轉換)

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

2020-04-29 13:40PHP教程網 PHP教程

本篇文章是對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類

復制代碼 代碼如下:


<?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,'老梁','**工作室','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]);
?>


延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品美女福利视频免费专区 | 九九热视频 这里有精品 | 久久机热视频 这里只有精品首页 | 午夜理论片YY4399影院 | 日本在线视 | 任我淫| 黑人chinese女人 | 成人私人影院在线观看网址 | 精品一区二区三区在线视频观看 | 女人爽到喷水的视频免费 | 国产一区二区三区免费在线视频 | 午夜宅男宅女看在线观看 | 特黄aa级毛片免费视频播放 | 午夜香蕉成视频人网站高清版 | 麻豆婷婷| 日本动漫啪啪动画片mv | 成人国产第一区在线观看 | 精品福利一区二区免费视频 | 欧美一级在线 | 日本xxxxxxxxx59| 香港三级血恋3 | 91热国内精品永久免费观看 | 亚洲无人区乱码中文字幕 | 女王厕便器vk | 免费看打屁股视频的软件 | 99久久久久国产精品免费 | 国产91 最新 在线 | 黑人双渗透 | 日韩视频在线免费观看 | 国产精品亚洲午夜不卡 | 三级理论在线播放大全 | 国产ay| 日本sss| 欧美男男xxx激情做受 | 99国产国人青青视频在线观看 | 日韩国产成人精品视频人 | 婷婷色天使在线视频观看 | 啊好大好爽 | 狠狠色狠狠色综合日日小蛇 | 精品综合一区二区三区 | 加勒比福利|