文字化けの問題を解決するために、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");