ホームページ >バックエンド開発 >PHPチュートリアル >File_get_contents が xls を読み込むと文字化けしますか?

File_get_contents が xls を読み込むと文字化けしますか?

WBOY
WBOYオリジナル
2016-06-23 14:11:191316ブラウズ

オンラインでxlsをダウンロードし、ローカルwpsで開くと正常だったのですが、file_get_contentsやfile()を使用すると文字化けしてしまいました。 $S = iconv("utf-8", "gb2312", $data); または $S =iconv("gb2312", "utf-8", $data); 方法を教えてください。それに対処してください。 。

ありがとうございます! !

ディスカッションへの返信(解決策)

もちろんです!

xlsはバイナリファイルなのでテキスト処理として扱っても問題ないのはおかしいです


もちろんです!

xls はバイナリ ファイルです。テキスト処理として扱うと問題がないのですが、


モデレーターさん、私の php コードは、デバッグ中に、文字化けしていてバイナリでした。
当初は、xls ファイルをダウンロードして処理し、保存したいと考えていました。しかし、ダウンロードしたコードが文字化けしてしまうのですが、どう対処すればよいでしょうか? xls ファイルは 2M 近くあり、比較的大きいです。
fopen で直接読み取ることはできますか?

PHP は PHPExcel クラス ライブラリを使用して xls ファイルを処理できます

PHP は PHPExcel クラス ライブラリを使用して xls ファイルを処理できます

ありがとうございます。関数を使用して現在のバイナリ ストリームを文字列に直接変換できますか?
現在ダウンロードしているデータはxlsバイナリであり、ファイルが非常に大きいため、上記のとおりにすると、まずxlsファイルとして保存してからxlsファイルを読み込む必要があり、面倒です。
現在インターネットからダウンロードされているバイナリ $file --> $str を文字列形式に変換する方法はあるでしょうか?

文字列に変換しても文字化けして分かりません。

文字列に変換しても文字化けして分かりません。

php で xls ファイルを処理するには、PHPExcel クラス ライブラリを使用できます

お二人ともありがとうございますが、PHPExcel は本当に使いにくいように感じます。主な理由は、速度が非常に遅いことです。それとも、まだ始めたばかりで、まだ研究を続けているのかもしれません。現在、PHPExcel の例を使用して、それを自分の xls に直接置き換えています。xls ドキュメントは 2M あり、まだ読み終わっていません。 60,000行。

現在の問題をもう一度説明します:
1. 最初にオンラインでcurlを使用してxlsファイルをダウンロードしましたが、まだ保存されていません。このxlsファイルを処理したいので、保存する前に処理してください。中のデータ。しかし、デバッグ中、xls ファイルはすべて文字化けしています。
そこで、データ処理を容易にするために、現時点でこのバイナリデータを直接テキストに復元する方法はないかどうかを尋ねたいと思います。

2. 上記のアイデアが実現できないと仮定すると、curl によってダウンロードされたデータが xxx.xls ファイル形式であることを確認し、PHPExcel を使用して xls ファイル データを開いて読み取るだけで済みます。現在、投稿中に PHPExcel を使用して xls を読んでいますが、5 分が経過しましたが、まだ読み終わっていません。

専門家の皆様に何か良い解決策があればお聞きしたいのですが?
結局、file()やfile_get_contentsを使って2mの文書を一瞬で読み込んだのが現状で、やっとPHPExcelで読み込んでも、こんなに遅いとデータ処理の意味がなくなってしまいます。 。 。

手動で CSV ファイルに変換してから、処理用のコードを記述することをお勧めします。XLS ファイルを直接処理するよりも確実に高速です。

PHPEXCEL は小さなファイルを問題なく処理できますが、大きなファイルの処理にはそれほど強力であるとは期待できません。ただし、いくつかのキャッシュ メカニズムが備わっていますが、大きなファイルには基本的に役に立ちません。

手動で CSV ファイルに変換してから、処理用のコードを記述することをお勧めします。XLS ファイルを直接処理するよりもはるかに高速です。

PHPEXCEL は小さなファイルを問題なく処理できますが、大きなファイルの処理にはそれほど強力であるとは期待できません。ただし、いくつかのキャッシュ メカニズムが備わっていますが、大きなファイルには基本的に役に立ちません。

ありがとうございます!しかし、私のプログラムでは、収集 --> データ処理 --> データベースへの挿入が必要です。これらはすべて自動的に完了します。収集ステップ中に、バイナリの文字化けしたコードがスタックしていることがわかりました。

手動で行うことをお勧めします。それを CSV ファイルに変換し、それを処理するコードを記述する方が、XLS ファイルを直接処理するよりも確実にはるかに高速です。


PHPEXCEL は小さなファイルを問題なく処理できますが、大きなファイルの処理にはそれほど強力であるとは期待できません。ただし、いくつかのキャッシュ メカニズムが備わっていますが、大きなファイルには基本的に役に立ちません。

ありがとうございます!しかし、私のプログラムでは収集 --> データ処理 --> データベースへの挿入が必要ですが、これらはすべて自動的に完了します。収集ステップ中に、バイナリの文字化けしたコードがスタックしているのがわかりました。

意味がわかりません。コレクションによって。 CSV は実際には固定形式のレコード テキスト ファイルであるため、CSV 形式に変換することをお勧めします。

なお、EXCELを読むのにサードパーティのライブラリを使わないと確実に文字化けしてしまいます。ストリーム ファイルはレコード ファイルとは異なります。
ただし、CSV に変換した後は、好きなように読み取ることができます。

また、EXCELを読むのにサードパーティのライブラリを使わないと必ず文字化けしてしまいます。ストリーム ファイルはレコード ファイルとは異なります。
ただし、CSV に変換した後は、好きなように読み取ることができます。

アドバイスありがとうございます。問題は緊急なので、解決するために一時的にアプローチを変更しました。
私が話しているコレクションとは、この xls ファイルには、オンラインで xls データを直接取得するための php が含まれており、データを直接処理することを意味します
(手動介入は不可能)、ローカル コンピューターにダウンロードされず、手動で CSV に変換されることはありません、phpにxls ->がない限り、変換コードをオンラインで探しましたが、見つけるのは難しいようです。


また、EXCELを読むのにサードパーティのライブラリを使わないと必ず文字化けしてしまいます。ストリーム ファイルはレコード ファイルとは異なります。
ただし、CSV に変換した後は、好きなように読み取ることができます。

アドバイスありがとうございます。問題は緊急なので、解決するためのアプローチを一時的に変更しました。
私が話しているコレクションとは、この xls ファイルには、オンラインで xls データを直接取得するための php が含まれており、データを直接処理することを意味します
(手動介入は不可能)、ローカル コンピューターにダウンロードされず、手動で CSV に変換されることはありません、phpにxls ->がない限り、変換コードをオンラインで探しましたが、見つけるのは難しいようです。

サードパーティのツールを使用して XLS-CSV を変換することもできます。別の言語で書かれた変換ツールを見つけて、PHP を使用してそれを呼び出すこともできます。

PHP Excel クラスは、非常にシンプルで使いやすいものがたくさんあります



また、EXCEL を読むためにサードパーティのライブラリを使用しないと、間違いなく文字化けして読み込まれます。ストリーム ファイルはレコード ファイルとは異なります。
ただし、CSV に変換した後は、好きなように読み取ることができます。

アドバイスありがとうございます。問題は緊急なので、解決するためのアプローチを一時的に変更しました。
私が話しているコレクションとは、この xls ファイルには、オンラインで xls データを直接取得するための php が含まれており、データを直接処理することを意味します
(手動介入は不可能)、ローカル コンピューターにダウンロードされず、手動で CSV に変換されることはありません、phpにxls ->がない限り、変換コードをオンラインで探しましたが、見つけるのは難しいようです。

サードパーティのツールを使用して XLS-CSV を変換することもできます。別の言語で書かれた変換ツールを見つけて、PHP を使用してそれを呼び出すこともできます。

ありがとうございます。当時はこの問題に対処することが非常に緊急だったので、この問題を回避し、xls を読み取ることを避け、別の方法で解決しました。私は最近、あなたが言及したphpのxls変換を勉強しています

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