ホームページ > バックエンド開発 > PHPチュートリアル > PHP で mysql データベースを Excel テーブルにエクスポート_PHP チュートリアル

PHP で mysql データベースを Excel テーブルにエクスポート_PHP チュートリアル

WBOY
リリース: 2016-07-13 10:46:43
オリジナル
1831 人が閲覧しました

php を使用して mysql データベースを Excel テーブルにエクスポートする方法はたくさんあります。最も簡単な方法は、php の fputcsv 関数を直接使用することです。Excel の標準形式を生成するには、3 番目の形式を使用する必要があります。パーティープラグイン

方法 1、fputcsv を使用する

コードは次のとおりです コードをコピー


// Excel ファイルのヘッダーを出力します。user.csv を必要なファイル名に置き換えることができます
header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition:attachment;filename="user.csv"'); header('キャッシュ制御: max-age=0');

// メモリを節約するために、ハンドルから 1 行ずつデータを読み込むだけではなく、データベースからデータを取得します。 $sql = 'select * from tbl where ...'; $stmt = $db->query($sql);

// PHP ファイルハンドルを開きます。php://output はブラウザに直接出力することを意味します
$fp = fopen('php://output', 'a');

// Excelの列名情報を出力します

$head = array('名前', '性別', '年齢', 'メールアドレス', '電話番号', '……'); foreach ($head as $i => $v) {
// Excel for CSV は GBK エンコードをサポートしています。変換する必要があります。変換しないと文字化けします

$head[$i] = iconv('utf-8', 'gbk', $v); }


// fputcsv を通じてファイル ハンドルにデータを書き込みます
fputcsv($fp, $head);

// カウンター
$cnt =

// $limit 行ごとに、大きすぎず小さすぎずに出力バッファを更新します

$limit = 100000;

// メモリを無駄にせずにデータを 1 行ずつフェッチします

while ($row = $stmt->fetch(Zend_Db::FETCH_NUM)) {

$cnt++
if ($limit == $cnt) { //データ量が多すぎることによる問題を防ぐために出力バッファをリフレッシュします

ob_flush(); フラッシュ(); $cnt =

}

foreach ($row as $i => $v) {

$row[$i] = iconv('utf-8', 'gbk', $v); }
fputcsv($fp, $row); }



方法2、ヘッダーを直接使用してブラウザ上でcsv形式でデータを出力する




コードは次のとおりです

コードをコピー

/*データベースに接続*/ $DB_Server = "ローカルホスト"; $DB_ユーザー名 = "ルート"; $DB_Password = "123456"; $DB_DBName = "mydb" //ターゲットデータベース名; $DB_TBLName = "mytable" //ターゲットテーブル名; $Connect = @mysql_connect($DB_Server, $DB_Username, $DB_Password) または die("接続できませんでした。"); mysql_query("名前を設定 'utf8'"); $savename = date("YmjHis") //Excel ファイル名をエクスポートします $file_type = "vnd.ms-excel"; $file_ending = "xls"; header("Content-Type: application/$file_type;charset=utf8"); header("Content-Disposition:attachment; filename=".$savename.".$file_ending"); //header("プラグマ: キャッシュなし");

/*発言情報を書き込む*/
$now_date = date("Y-m-j H:i:s"); $title = "データベース名: $DB_DBName、データテーブル: $DB_TBLName、バックアップ日: $now_date"; echo("$titlen");

/*データベースのクエリ*/
$sql = "$DB_TBLName から * を選択"; $ALT_Db = @mysql_select_db($DB_DBName, $Connect) または die("データベースを選択できませんでした"); $result = @mysql_query($sql,$Connect) または die(mysql_error());

/*テーブルフィールド名の書き込み*/
for ($i = 0; $i echo mysql_field_name($result,$i)

; }

エコー「n」;

/*テーブルデータの書き込み*/
$sep = ",t"; while($row = mysql_fetch_row($result)) {
$data = ""; for($i=0; $i if(!isset($row[$i]))

$data .= "NULL".$sep; // NULL フィールドを処理します

; elseif ($row[$i] != "")
$data .= "$row[$i]".$sep; それ以外は
$data .= "".$sep //空のフィールドの処理
; }

エコー $data."n"; }

?>


例 3、2 つ目はほぼ完成です

コードは次のとおりです コードをコピー


//検索
$start_time = strtotime($start_date);
$end_time = strtotime($end_date);
$sql = "「.$ecs->table('invoice') から a.*,b.order_amount,b.money_paid を選択します。」を「.
」として " left join ".$ecs->table('order_info')." as b on a.order_id=b.order_sn".
" ここで、a.add_time >=".$start_time." および a.add_time <=".$end_time." ";
$temp_list = $db->getAll($sql);

if($temp_list){//有データ
        $Html=''.chr(13).chr(10);
        $Html.='


                           
                                   
                                   
                           
                           
                                    
                                    
                                    
                                    
                                    
                                    
                                    
                                    
                                    
                                    
                           ';
            //取得符合条件の数
            for($i=0;$i                  $temp_i = $i+1;
                 if($temp_list[$i][order_amount]==0){
                     $temp_money = $temp_list[$i][money_paid];
                 }その他{
                     $temp_money = $temp_list[$i][order_amount];
                 }

$temp_time = date('Y-m-d', $temp_list[$i]['add_time']);
                 $Html.='


                                    
                                    
                                    
                                    
                                    
                                    
                                    
                                    
                                    
                                    
                           ';
             }
             $Html.='
時間:'.$start_date.'~'.$end_date.'
编号発行票类型発行票抬头発行票コンテンツ订单号金额追加日收件人联系方式地址
'.$temp_i.''.$temp_list[$i][type_name].''.$temp_list[$i][top].''.$temp_list[$i][content].''.$temp_list[$i][order_id].''.$temp_money.''.$temp_time.''.$temp_list[$i][user_name].''.$temp_list[$i][mobile].' '.$temp_list[$i][電話]。' '.$temp_list[$i][住所].'
';
             $Html.='';
             $mime_type = 'application/vnd.ms-excel';
             header('Content-Type: ' . $mime_type);
             header('Content-Disposition:attachment; filename="invoice.xls"');
             header('キャッシュ制御: 必須再検証、事後チェック = 0、事前チェック = 0');
             header('プラグマ: public');
            echo $HTML;

Excel は数値の形式を自動的に変換するため、一部の携帯電話番号や ID カードなどがめちゃくちゃになることがあります。そのため、エクスポートするときに最初にそれらを定義できます

コードは次のとおりです コードをコピー

'.$temp_list[$i][order_id].'

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/632921.html技術記事 php を使用して mysql データベースを Excel テーブルにエクスポートするには、さまざまな方法があります。最も簡単な方法は、php の fputcsv 関数を直接使用することです。Excel の標準形式を生成することもできます。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート