ホームページ  >  記事  >  バックエンド開発  >  PHPでExcelにエクスポートした文字化け問題を解決

PHPでExcelにエクスポートした文字化け問題を解決

WBOY
WBOYオリジナル
2016-06-20 13:05:05979ブラウズ

文字化けの問題を解決するために、PHP で Excel をエクスポートした経験を少し。

PHP プロジェクトではデータを Excel にエクスポートする必要があり、データには中国語が含まれています。

オンラインで PHPExcel の使用方法を簡単に学びましたが、このフレームワークは私のニーズに比べて複雑すぎるため、まだ簡単な方法を探しています。

このように書くのが最も簡単であることをインターネットで見つけましたが、問題は、このメソッドの中国語エンコードが信頼できないことです。

PHP コード

<?php  

header("Content-type:application/vnd.ms-excel");  

header("Content-Disposition:attachment;filename=export_data.xls");  

echo   "姓名"."\t";    

echo   "繁體"."\t";    

echo   "博客"."\t";    

echo   "\n";    

echo   "jason"."\t";    

echo   "@"."\t";    

echo   "javaeye"."\t";    

?>  

ヘッダーに文字セットを追加することを考える学生もいるでしょう

PHP コード

header("Content-type:application/vnd.ms-excel;charset=UTF-8");  

質問: ここでは、表示するためにどの文字セットを選択するかをブラウザーに指示するだけです。最終的に、私の要件は xls ファイルを生成することです。

もちろん、iconv を使用してトランスコードすることを考える学生もいるでしょう。

PHP コード

echo iconv("現在のエンコーディング", "GB18030", "このブログは、jason による javaeye からのものです");

質問: ファイル内の中国語の文字エンコードは GB18030 ですが、Excel はファイルを開くために使用するエンコードをどのようにして知るのでしょうか? しかし、従来の文字エンコードに遭遇した場合、Excel は完全に OS のデフォルトに依存することしかできません。 BIG5 なのでまだ文字化けします。

最後に、phpMyAdmin を使用します。HTMLExcel を使用します。形式は次のとおりです。

HTML コード

<html xmlns:o="urn:schemas-microsoft-com:office:office"  

xmlns:x="urn:schemas-microsoft-com:office:excel"  

xmlns="http://www.w3.org/TR/REC-html40">  

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  

<html>  

    <head>  

        <meta http-equiv="Content-type" content="text/html;charset=UTF-8" />  

        <style id="Classeur1_16681_Styles"></style>  

    </head>  

    <body>  

        <div id="Classeur1_16681" align=center x:publishsource="Excel">  

            <table x:str border=0 cellpadding=0 cellspacing=0 width=100% style="border-collapse: collapse">  

                <tr><td class=xl2216681 nowrap>1234</td><td class=xl2216681 nowrap>Robbin会吐口水</td></tr>  

                <tr><td class=xl2216681 nowrap>5678</td><td class=xl2216681 nowrap>javaeye网站</td></tr>  

            </table>  

        </div>  

    </body>  

</html>  
これで、HTML で Content-type を設定するだけで、直接エコーできるようになります。もちろん、ヘッダーを追加する必要があります。

PHP コード

header("Content-type:application/vnd.ms-excel");  

header("Content-Disposition:attachment;filename=export_data.xls");  

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。