php Excelでエクスポートした文字化けに関する問題
Jun 13, 2016 pm 12:00 PM
php Excelエクスポートでコードが文字化けする問題
/**<br /> * 用于生成excel文件的函數(shù)<br /> * author:walker<br /> * @param $data 生成excel的數(shù)據(jù)(二維數(shù)組形式)<br /> * @param null $savefile 生成excel的文件名(保不指定,則為當(dāng)前時間戳)<br /> * @param null $title 生成excel的表頭(一維數(shù)組形式)<br /> * @param string $sheetname 生成excel的sheet名稱(缺省為sheet1)<br /> */<br /> function exportExcel($data,$savefile=null,$title=null,$sheetname='sheet1'){<br /> //若沒有指定文件名則為當(dāng)前時間戳<br /> if(is_null($savefile)){<br /> $savefile=time();<br /> }<br /> //若指字了excel表頭,則把表單追加到正文內(nèi)容前面去<br /> if(is_array($title)){<br /> array_unshift($data,$title);<br /> }<br /> import('Org.Util.PHPExcel');<br /> import('Org.Util.PHPExcel.IOFactory');<br /> import('PHPExcel.Util.PHPExcel.Reader.Excel5');<br /> $objPHPExcel = new \PHPExcel();<br /> //Excel內(nèi)容<br /> foreach($data as $k => $v){<br /> $obj=$objPHPExcel->setActiveSheetIndex(0);<br /> $row=$k+1;//行<br /> $nn=0;<br /> foreach($v as $vv){<br /> $col=chr(65+$nn);//列<br /> $vv = iconv("UTF-8", "GB2312//IGNORE",$vv);<br /> $obj->setCellValue($col.$row,$vv);//列,行,值<br /> $nn++;<br /> }<br /> }<br /> $objPHPExcel->getActiveSheet()->setTitle($sheetname);<br /> $objPHPExcel->setActiveSheetIndex(0);<br /> header('Content-Type: application/vnd.ms-excel');<br /> header('Content-Disposition: attachment;filename="'.$savefile.'.xls"');<br /> header("Content-Type: application/vnd.ms-excel; charset=UTF-8");<br /> header('Cache-Control: max-age=0');<br /> $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');<br /> $objWriter->save('php://output');<br /> exit;<br /> }<br /> <br /> /**<br /> *<br /> * 導(dǎo)出Excel<br /> */<br /> function expUser(){//導(dǎo)出Excel<br /> $xlstitle = array('id','商品編碼','模板編號','商品名稱','總庫存','當(dāng)前庫存','供應(yīng)商');<br /> $xlssql = M('erp_inventory');<br /> $xlsData = $xlssql->getField('id,p_code,mid,pname,banlance,cur_banlance,factory');<br />// show_bug($xlsData);die;<br /> $this->exportExcel($xlsData,time(),$xlstitle);<br /> <br /> }

上記は私のコードです。thinkphpフレームワークを使用しています。2番目の畫像はエクスポート後の効果、問題が発生する場所と方法です。それを解決するには?
------解決策----------------------
thinkphp を使用しているため、次のようになります。 utf-8
そして、PHPExcel のデフォルトの文字セットも utf-8
それでは、なぜ
$vv = iconv("UTF-8", "GB2312//IGNORE",$vv) が必要なのでしょうか;
utf-8 を gb2312 に変換しますか?
-----解決策---------------------------- -
理解できない?私はそれを明らかにしませんでしたか?ヒューリスティックな解決策は受け入れられないようです
トランスコードに iconv を使用するステートメントをすべて削除してください!
これは明らかですよね?
PHPExcel を使用して Excel に書き込まれるデータは、UTF-8 でエンコードされたデータである必要があります
これは理解すべきですよね?
-----解決策--------------------------------
gbk に変換して見てください。iconv を火星文字と繁體字中國語の文字に変換するときに問題が発生します
$vv = mb_convert_encoding($vv =, "GBK","UTF-8");
------解決策--- ------------------
38 削除する必要はありません
の場合まだ動作しません。スクリーンショットを投稿してください
--- ---解決策------------------
はい、転送しました
前にも言ったように、私は一人です コード スニペットのテストには問題ありません。
したがって、問題は他の場所にある可能性があります。受信データ、テーブルから読み取られたデータ、または使用する phpexcel クラスなどです。
include 'PHPExcel/Classes/PHPExcel.php '; /> // インポート (' ORG.UTIL.PEXCEL.IFActory '); <br> // インポート (' PHPEXCEL.PHPEXCEL.Reader.excel5 ');

ホットAIツール

Undress AI Tool
脫衣畫像を無料で

Undresser.AI Undress
リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover
寫真から衣服を削除するオンライン AI ツール。

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中國語版
中國語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











印刷が必要なファイルを開いたときに、印刷プレビューで表の枠線が何らかの原因で消えてしまった場合は、早めに対処する必要があります。 file このような質(zhì)問がある場合は、エディターに參加して次のコースを?qū)W習(xí)してください: Excel で表を印刷するときに枠線が消えた場合はどうすればよいですか? 1. 次の図に示すように、印刷する必要があるファイルを開きます。 2. 以下の図に示すように、必要なコンテンツ領(lǐng)域をすべて選択します。 3. 以下の図に示すように、マウスを右クリックして「セルの書式設(shè)定」オプションを選択します。 4. 以下の図に示すように、ウィンドウの上部にある「境界線」オプションをクリックします。 5. 下図に示すように、左側(cè)の線種で細(xì)い実線パターンを選択します。 6.「外枠」を選択します

Excelは日々の事務(wù)作業(yè)でデータ処理に使用されることが多く、「フィルター」機能を使用することが多いです。 Excel で「フィルタリング」を?qū)g行する場合、同じ列に対して最大 2 つの條件しかフィルタリングできません。では、Excel で同時に 3 つ以上のキーワードをフィルタリングする方法をご存知ですか?次に、それをデモンストレーションしてみましょう。 1 つ目の方法は、フィルターに條件を徐々に追加することです。條件を満たす 3 つの詳細(xì)を同時にフィルターで除外する場合は、まずそのうちの 1 つを段階的にフィルターで除外する必要があります。最初に、條件に基づいて姓が「Wang」の従業(yè)員をフィルタリングできます。 [OK]をクリックし、フィルター結(jié)果の[現(xiàn)在の選択をフィルターに追加]にチェックを入れます。手順は以下の通りです。同様に再度個別にフィルタリングを行う

私たちは日々の仕事や勉強で、他人からExcelファイルをコピーし、そのファイルを開いて內(nèi)容を追加したり、再編集したりして保存することがありますが、互換性チェックのダイアログボックスが表示されることがあり、非常に面倒です。ソフトウェア. 、通常モードに変更できますか?そこで以下では、エディターがこの問題を解決するための詳細(xì)な手順を紹介します。一緒に學(xué)びましょう。最後に、忘れずに保存してください。 1. 図に示すように、ワークシートを開き、ワークシートの名前に追加の互換モードを表示します。 2. このワークシートでは、內(nèi)容を変更して保存すると、図のように互換性チェックのダイアログが必ず表示され、非常に面倒です。 3. [Office] ボタンをクリックし、[名前を付けて保存] をクリックして、

e私たちはExcelを使ってデータテーブルなどを作成することがあります。パラメータ値を入力するときに、特定の數(shù)値の上付きまたは下付きが必要になることがあります。たとえば、數(shù)式がよく使用されます。では、Excelで下付き文字を入力するにはどうすればよいですか?詳細(xì)な手順を見てください: 1. 上付き文字の方法: 1. まず、Excel に a3 (3 は上付き文字) と入力します。 2. 數(shù)字「3」を選択し、右クリックして「セルの書式設(shè)定」を選択します。 3. 「上付き文字」をクリックし、「OK」をクリックします。 4. ほら、効果はこんな感じです。 2. 下付き文字の設(shè)定方法: 1. 上付き文字の設(shè)定方法と同様に、セルに「ln310」(3 は下付き文字) と入力し、數(shù)字の「3」を選択し、右クリックして「セルの書式設(shè)定」を選択します。 2.「下付き文字」にチェックを入れて「OK」をクリックします。

データを処理していると、倍數(shù)や溫度などのさまざまな記號が含まれるデータに遭遇することがあります。 Excel で上付き文字を設(shè)定する方法をご存知ですか? Excel を使用してデータを処理する場合、上付き文字を設(shè)定しないと、大量のデータを入力するのがさらに面倒になります。今回はエクセルの上付き文字の具體的な設(shè)定方法をエディターがお屆けします。 1. まず、図に示すように、デスクトップで Microsoft Office Excel ドキュメントを開き、上付き文字に変更する必要があるテキストを選択します。 2. 次に、図に示すように、右クリックして、クリック後に表示されるメニューで「セルの書式設(shè)定」オプションを選択します。 3. 次に、自動的に表示される「セルの書式設(shè)定」ダイアログボックスで

ソフトウェアの學(xué)習(xí)では、Excel が便利なだけでなく、実際の作業(yè)で必要なさまざまな形式に対応できるため、Excel の使用に慣れています。Excel は非常に柔軟に使用でき、今日は「みんなのために:Excelの読み取りモードを設(shè)定する場所」を持ってきました。 1. コンピュータの電源を入れ、Excel アプリケーションを開き、目的のデータを見つけます。 2. Excel で読み取りモードを設(shè)定するには 2 つの方法があります。 1 つ目: Excel には、Excel レイアウトで多數(shù)の便利な処理メソッドが配布されています。 Excelの右下に読み取りモードを設(shè)定するショートカットがあります。バツマークのパターンを見つけてクリックすると、読み取りモードに入ります。バツマークの右側(cè)に小さな立體マークがあります。 。

ほとんどのユーザーは Excel を使用してテーブル データを処理します。実は Excel にも VBA プログラムがあります。専門家を除けば、この関數(shù)を使用したユーザーはあまり多くありません。VBA で記述するときによく使用されるのが iif 関數(shù)です。実際には、次の場合と同じです。関數(shù)の機能は似ていますが、iif関數(shù)の使い方を紹介します。 SQL ステートメントには iif 関數(shù)があり、Excel には VBA コードがあります。 iif 関數(shù)は Excel ワークシートの IF 関數(shù)と似ており、論理的に計算された真?zhèn)帳葌蝹帳嘶扭い普鎮(zhèn)蝹帳蚺卸à?、異なる結(jié)果を返します。 IF 関數(shù)の使用法は (條件、はい、いいえ) です。 VBAのIF文とIIF関數(shù)、前者のIF文は條件に応じて異なる文を?qū)g行できる制御文であり、後者は條件に応じて異なる文を?qū)g行できる制御文です。

1. PPT を開き、Excel アイコンを挿入する必要があるページに移動します。 「挿入」タブをクリックします。 2. [オブジェクト]をクリックします。 3. 次のダイアログボックスが表示されます。 4. [ファイルから作成]をクリックし、[參照]をクリックします。 5. 挿入する Excel テーブルを選択します。 6. [OK] をクリックすると、次のページが表示されます。 7. [アイコンで表示]にチェックを入れます。 8. 「OK」をクリックします。
