激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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

服務器之家 - 編程語言 - PHP教程 - excel的導出和下載(實例講解)

excel的導出和下載(實例講解)

2021-06-21 15:48ImCehnyx PHP教程

下面小編就為大家帶來一篇excel的導出和下載(實例講解)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

1、前言

有時需要將數據庫表資源導出excel,做成一些報表數據。

而php導出excel的方法大致有幾種:

1. 使用php的類庫,進行導出,如PHPExcel

2.使用php原生的方法進行導出

而本文介紹的就是,如何通過原生方法導出excel

2、關鍵函數

2.1、ob輸出

•ob_start();
•ob_get_contents
•ob_end_clean
•fopen
•fwrite
•fclose
•iconv

2.2、header輸出

1.header
2.iconv

3、使用ob函數進行excel到導出

ob函數主要分為三步:

1.進行緩存的設置
2.讀取緩存
3.寫入文件

下面貼上導出的excel類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
class Excel
{
 // ob函數緩存的開始
 public static function start ()
 {
  ob_start();
 }
 // 獲取緩存內容
 public static function save ($path)
 {
  $data = ob_get_contents();
  ob_end_clean();
  self::writeToExcel($path, $data);
 }
 //寫到文件
 private static function writeToExcel ($fn, $data)
 {
  $dir = self::setDir();
  $fp = fopen($dir . '/'. $fn, 'wb');
  fwrite($fp, $data);
  fclose($fp);
 }
 //excel默認是GKB,所有要轉碼
 public static function setChar ($value, $inchar = 'utf-8', $outchar ='gbk')
 {
  return iconv($inchar, $outchar, $value);//轉化編碼
 }
 //創建目錄,linux系統一般要寫到文件,目錄需要w謙虛,而文件需要x權限,為了省事直接建立子文件夾,可以不需要修改謙虛
 public static function setDir($dirName = 'excel')
 {
  if(!is_dir($dirName)) {
   mkdir($dirName);
  }
  return $dirName;
 }
}

4、完整頁面代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?php
 header('Content-Type: text/html; charset=GBK'); //excel需要GBK編碼,為了防止轉碼產生的亂碼,需要設置成GBK
 require 'coon.php';
 require 'excel.class.php';
 
 $sql = 'select * from user';
 $res = $link->query($sql);
 //判斷是否有發送get數據
 if(isset($_GET['id'])){
  $name = empty($_GET['id']) ? 'a' . rand(1000,9999) : $_GET['id'] ;
  $filename = $name . '.xls';
  //設置緩存的開始
  Excel::start();
 }
?>
<?php
 //頁面輸出一般是不需要轉碼的,excel輸出才需要轉碼
 echo '<table width=500 height=25 border=0 align=center cellpadding=0 cellspacing=0>';
 echo '<thead><tr>';
 //設置thead輸出
 echo '<td style="border-bottom:1px solid black;padding:10px;text-align:center;">' . Excel::setChar('編號') . '</td>';
 echo '<td style="border-bottom:1px solid black;padding:10px;text-align:center;">' . Excel::setChar('用戶名') . '</td>';
 echo '<td style="border-bottom:1px solid black;padding:10px;text-align:center;">' . Excel::setChar('密碼') . '</td>';
 echo '</thead></tr>';
?>
<?php
 echo '<tbody>';
 //設置tbody輸出
 while($re = $res->fetch(PDO::FETCH_ASSOC)){
  echo '<tr>';
  echo '<td style="border-bottom:1px solid black;padding:10px;text-align:center;">' . Excel::setChar($re['id']) . '</td>';
  echo '<td style="border-bottom:1px solid black;padding:10px;text-align:center;">' . Excel::setChar($re['user']) . '</td>';
  echo '<td style="border-bottom:1px solid black;padding:10px;text-align:center;">' . Excel::setChar($re['pwd']) . '</td>';
  echo '</tr>';
 }
 echo '</tbody></table>';
?>
<?php
if(isset($_GET['id'])){
 //保存文件
 Excel::save($filename);
}
if(isset($_GET['id'])){
 echo '<a href="obexcel.php" rel="external nofollow" >' .Excel::setChar('完成') .'</a>';
}else{
 echo '<a href="obexcel.php?id" rel="external nofollow" >' . Excel::setChar('導出') .'</a>';
 
}
?>

5、使用header下載excel

使用ob函數導出excel只能保存到服務器,不能提供下載(特殊處理下還是可以的);下面介紹使用header()函數來導出并下載excel

主要兩個header()函數

?
1
2
header("Content-type:application/vnd.ms-excel");//指定文件類型
header("Content-Disposition:filename=a.xls" ); //指定下載文件名

其他做法和ob函數的導出相同(下面完整代碼)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
 
//下載主要靠這兩個
header("Content-type:application/vnd.ms-excel");//指定文件類型
header("Content-Disposition:filename=a.xls" ); //指定下載文件名
require 'coon.php';
require 'excel.class.php';
$sql = 'select * from user';
$res = $link->query($sql);
?>
 
<?php
 //頁面輸出一般是不需要轉碼的,excel輸出才需要轉碼
 echo '<table width=500 height=25 border=0 align=center cellpadding=0 cellspacing=0>';
 echo '<thead><tr>';
 //設置thead輸出
 echo '<td style="border-bottom:1px solid black;padding:10px;text-align:center;">' . Excel::setChar('編號') . '</td>';
 echo '<td style="border-bottom:1px solid black;padding:10px;text-align:center;">' . Excel::setChar('用戶名') . '</td>';
 echo '<td style="border-bottom:1px solid black;padding:10px;text-align:center;">' . Excel::setChar('密碼') . '</td>';
 echo '</thead></tr>';
?>
 
<?php
 echo '<tbody>';
 //設置tbody輸出
 while($re = $res->fetch(PDO::FETCH_ASSOC)){
  echo '<tr>';
  echo '<td style="border-bottom:1px solid black;padding:10px;text-align:center;">' . Excel::setChar($re['id']) . '</td>';
  echo '<td style="border-bottom:1px solid black;padding:10px;text-align:center;">' . Excel::setChar($re['user']) . '</td>';
  echo '<td style="border-bottom:1px solid black;padding:10px;text-align:center;">' . Excel::setChar($re['pwd']) . '</td>';
  echo '</tr>';
 }
 echo '</tbody></table>';
?>

6、結語

這里只簡單介紹了excel的導出和下載,一個是使用ob()函數,一個是使用header()函數,兩種方法大同小異,但都需要注意的是excel需要GBK編碼,需要使用iconv函數進行轉碼,才能保證不出現亂碼。

本文只簡單了介紹,更多高深的方法需要由你自己去探索。

以上這篇excel的導出和下載(實例講解)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:http://www.cnblogs.com/ImCehnyx/archive/2017/08/22/7414084.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 99影视电影电视剧在线播放 | 亚洲生活片 | 一区二区三区日本在线观看 | 欧美大荫蒂xxx | 在线成人www免费观看视频 | 久久综合一区 | 亚洲国产精品二区 | 天天色综合6| 性看小视频 | 亚洲一区二区中文字幕在线观看 | www.91sese| 久久久久国产一区二区三区不卡 | 欧美一级黄视频 | 国产一区二区精品在线观看 | 成人在线精品视频 | 羞羞色院91精品网站 | 日本在线国产 | 久久艹精品 | 日韩字幕在线观看 | 综合精品一区 | 在线99热 | 国产精品久久久久久久久久久久久久久久 | 国产精品麻豆91 | 国产精品一二三区在线观看 | 日韩在线观看视频免费 | 色99久久| 美女久久久久 | 欧美日韩电影在线 | 嫩草影院在线观看网站成人 | 国产人成精品一区二区三 | 久久久久久久久久网站 | 久久精品视频亚洲 | www.国产免费 | 欧美国产一级片 | 99热99精品 | 九九视频久久 | 福利在线影院 | 久久久久久久久久久久久国产精品 | 中文字幕亚洲视频 | 成人在线视频精品 | 久久精品久久精品国产大片 |