phpexcelreaderでのデータ取込について - PHPプロ!Q&A掲示板

2693

  • 0P

phpexcelreaderでのデータ取込について

質問日時 / 2010年4月27日 09:17    回答数 / 6件

Questioner:  minton  このエントリーをはてなブックマークに追加 

キーワード / キーワードが設定されていません

PHPにてエクセルデータの読込みで、phpexcelreaderを使用しているのですが、
セルの書式設定の表示形式が『文字列』、
値にはExcel関数にて別シートの文字が入力されているセルを参照しているセルのデータの取得がうまくいきません。
別シートのセルを参照していても、リンク先に数字が入力されている場合は、取得できたりします。。

そもそも、上記のように関数が設定されている場合は、データの取得はできるのでしょうか?また、エクセルシートの表示形式のルールはあるのでしょうか?

ご教示お願い致します。

ソースは以下の様な感じです。

  1. $objReader = new Spreadsheet_Excel_Reader();
  2. $objReader->setUTFEncoder('mb');
  3. $objReader->setOutputEncoding('UTF-8');
  4. $objReader->read($uploadname);

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┗A01fedora6mintonさん お疲れ様です >>CODE <?php //int
 ┗A01-1mintonfedora6さんありがとうございます。 問題点が2つ
  ┗A01-1-1fedora6mintonさん おつかれさまです。 ご返信が遅くな
   ┗A01-1-1-1mintonfedora6さんありがとうございます。 以下のように
    ┗A01-1-1-1-1fedora6mintonさん >>CODE <meta http-equiv="Content-Ty
     ┗A01-1-1-1-1-1mintonfedora6さん ありがとうございました。

回答一覧

並び替え:

A01
answererfedora6 [4月27日 13:43] (最終編集:4月27日 14:42)

mintonさん

お疲れ様です

  1. <?php
  2. //internal character  UTF-8
  3.  
  4. require_once 'Excel/reader.php';
  5.  
  6. $data = new Spreadsheet_Excel_Reader();
  7.  
  8. $data->setOutputEncoding('CP932');
  9.  
  10. $file_name = mb_convert_encoding("新規.xls" , "SJIS" , "UTF-8" );
  11.  
  12. $data->read($file_name);
  13. ......
  14.  
  15. ?>


http out code is Shift_JIS.

よろしくお願いいたします。

この意見に回答する

ツリーへ TOPへ

A01-1
replyerminton [4月28日 14:11]

fedora6さんありがとうございます。

問題点が2つ発生してしまいました。

上記コードを参考にしたところ、
まず、ブック名に漢字やカタカナが含まれている場合に、
The filename ○○.xls is not readbleというエラーになってしまいます。

なので、ブック名を数字すると取り込めたのですが、
以下のエラーになってしまいました。
Wrong charaset, conversion from 'UTF-16LE' to 'CP932' is not allowed 
in /usr/Zend/phpExcelReader/Excel/reader.php

reader.phpのエラー部のソースは以下です。

お手数かけますが、再度ご教示よろしくお願い致します。

  1. function _encodeUTF16($string)
  2.     {
  3.         $result = $string;
  4.         if ($this->_defaultEncoding){
  5.             switch ($this->_encoderFunction){
  6.                 case 'iconv' :     $result = iconv('UTF-16LE', $this->_defaultEncoding, $string);
  7.                                 break;
  8.                 case 'mb_convert_encoding' :     $result = mb_convert_encoding($string, $this->_defaultEncoding, 'UTF-16LE' );
  9.                                 break;
  10.             }
  11.         }
  12.         return $result;
  13.     }

この意見に回答する

ツリーへ TOPへ

A01-1-1
replyerfedora6 [4月29日 17:11] (最終編集:4月29日 17:18)

mintonさん

おつかれさまです。

ご返信が遅くなり申し訳ありません。

NO1について

  1. //php file  internal character is utf-8
  2.  
  3. $file_name = mb_convert_encoding("新規.xls" , "SJIS" , "UTF-8" );

  1. //php file  internal character is Shit-JIS
  2.  
  3. $file_name = "新規.xls" ;

NO.2について
  1. //use iconv  (default)
  2. require_once 'Excel/reader.php';
  3.  
  4. $data = new Spreadsheet_Excel_Reader();
  5.  
  6. $data->setOutputEncoding('CP932');

  1. //use mb_convert_encoding
  2. require_once 'Excel/reader.php';
  3. $data = new Spreadsheet_Excel_Reader();
  4. $data->setUTFEncoder("mb");
  5. $data->setOutputEncoding('SJIS');
  6.  
  7. ....

http out character is Shift-JIS

以上です。

よろしくお願いいたします。

この意見に回答する

ツリーへ TOPへ

A01-1-1-1
replyerminton [4月30日 09:25]

fedora6さんありがとうございます。

以下のように変えてみたら、エラーにはならないのですが、
やはり、Excel関数にてブック内の別シートの文字列(数字以外)のセルを
参照しているセルの値は取り込めませんでした。
セルの書式設定を文字列に変えてみてもだめでした。

参照先の値が数字の場合は取り込めていますが。

何か心あたりがあれば、ご教示お願いします。

  1. $data->setOutputEncoding('SJIS');

この意見に回答する

ツリーへ TOPへ

A01-1-1-1-1
replyerfedora6 [4月30日 13:38]

mintonさん

  1. <meta http-equiv="Content-Type" content="text/html; charset=Shift-JIS">
  2. <?php
  3.     //some codes
  4. ?>

Try used Shift-JIS character encoding in Microsoft Internet Explorer.

and In my test environment,it's ok.



PS:日本語を勉強していますので、どうぞよろしくお願いします。

この意見に回答する

ツリーへ TOPへ

A01-1-1-1-1-1
replyerminton [5月25日 09:02]

fedora6さん
ありがとうございました。

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
PHPでのRSS表示までの流れについて
 このエントリーをはてなブックマークに追加 
A
get_headers()だとフィードを重複取得したり、宜しく無い様なので、 この件は忘れて、フィード内の以下の値をチェックしてください。 RSS1.0: channel>d:date RSS2.0: channel>lastBuildDate ATOM: modifi...

>>続きを読む

phpファイルをどう分けるか、といった問題は経験のある人に相談すると安心できますね。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)