• 締切済み

Spreadsheet::ParseExcelを使ってみたいのですが・・・

CPANのモジュールよりエクセルからデータを読み込むものがあったので、ぜひつかってみたかったのですが、使い方がよくわかりません。 いろいろ調べまして、とりあえず、下記のようなできあがったサンプルを実行してみたのですが、 ------------------------------------------------------------------ use strict; use Spreadsheet::ParseExcel; my $oExcel = new Spreadsheet::ParseExcel; #1.1 Normal Excel97 my $oBook = $oExcel->Parse('Excel/Test97.xls'); my($iR, $iC, $oWkS, $oWkC); print "FILE :", $oBook->{File} , "\n"; print "COUNT :", $oBook->{SheetCount} , "\n"; print "AUTHOR:", $oBook->{Author} , "\n"; for(my $iSheet=0; $iSheet < $oBook->{SheetCount} ; $iSheet++) { $oWkS = $oBook->{Worksheet}[$iSheet]; print "--------- SHEET:", $oWkS->{Name}, "\n";S for(my $iR = $oWkS->{MinRow} ; defined $oWkS->{MaxRow} && $iR <= $oWkS->{MaxRow} ; $iR++) { for(my $iC = $oWkS->{MinCol} ; defined $oWkS->{MaxCol} && $iC <= $oWkS->{MaxCol} ; $iC++) { $oWkC = $oWkS->{Cells}[$iR][$iC]; print "( $iR , $iC ) =>", $oWkC->Value, "\n" if($oWkC); } } } ------------------------------------------------------------------ 下記のエラーがでてしまいます。 Can't locate Spreadsheet/ParseExcel.pm in @INC (@INC contains: C:/Perl/site/lib C:/Perl/lib .) at excel.txt line 2. BEGIN failed--compilation aborted at excel.txt line 2. 現状はC:\Perl\cpan\build\Spreadsheet-ParseExcel-0.30 というディレクトリにモジュールのフォルダがインストールされるところまではできたのですが、後何が必要なのか、もしくはどこがおかしいのか、見当もつきません。 どなたか教えていただけますでしょうか。 ちなみにwindowsで動かしており、active perlをインストールして、 コマンドプロンプトでやっています。

みんなの回答

  • maura
  • ベストアンサー率46% (48/104)
回答No.1

残念ながら モジュールのインストールは完了していません。 C:\Perl\cpan\build\Spreadsheet-ParseExcel-0.30 は、インストール時に使用する一時的なディレクトリで 単に、ダウンロードして解凍しただけです。 コマンドプロンプトより、 > ppm install Spreadsheet-ParseExcel と入力しモジュールのインストールを完了させてください。

trfnc223
質問者

お礼

ご回答ありがとうございます!! とりあえずは出力されました。 データがあるだけ出力されるプログラムだったんですね。 ハッキリ言って何がどうなって出力されたのだが、 さっぱりわからないのですが、 また、別のスレッドを立てさせていただきます。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Spreadsheet::ParseExcel+正規表現?

    Excelファイルを読み込んで、A列をずら~っと上から連続して表示するプログラムを作ったのですが(下記)、句読点の"。"が入ったセルで改行したいです。しかし、うまくいきません。文字コードが原因なのかな・・・と思ってはいるのですが・・・調べても調べてもわかりません。どうか、未熟者にアドバイスお願いします。 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ #! /usr/bin/perl # モジュールの読み込み use strict; use utf8; use Spreadsheet::ParseExcel; use Spreadsheet::ParseExcel::FmtJapan; # ? binmode STDOUT, ":utf8"; # Excelファイルの処理 my $format = new Spreadsheet::ParseExcel::FmtJapan; my $excel = new Spreadsheet::ParseExcel; my $book = $excel->Parse("xlsファイルの場所"); my $sheet = $book->{"Worksheet"}[0]; my $MaxRow = $sheet->{"MaxRow"}; my $MaxCol = $sheet->{"MaxCol"}; for(my $col=0, my $row=0; $row<=$MaxRow; $row++){ my $cell = $sheet->{"Cells"}[$row][$col]; my $val = ""; if($cell){ $val = $cell->Value; } print "$val"; if($cell=~"。"){ print "\n\n"; } } print "\n";

    • ベストアンサー
    • Perl
  • Spreadsheet::WriteExcelについて教えてください。

    Windows2000 IE6.0 Perl5.005_03 Spreadsheet-WriteExcel-0.33 Parse-RecDescent-1.80 質問ですが、CGIとして実行すると「サーバーが見つかりません」 になってしまいます。エクセルファイルは正常に作成はできているようです。 use Spreadsheet::WriteExcel;をコメントにして実行すると移動したいURLに 飛ぶことができるのですが、当然ながらEXCELファイルは作成されません。 どのようにしたらよいのでしょうか・・・ print "Location: 移動したいURL\n\n"; print '<html><body>'; print '<br><br>'; print '<table align = "center">'; print '<tr>'; print '<td><font size = 5 ; color = blue>'; print "EXCEL書き出し"; print '</font></td>'; print '</tr>'; print '</table>'; print '</body></html>'; use Spreadsheet::WriteExcel; my $workbook = Spreadsheet::WriteExcel->new("perl.xls"); $worksheet = $workbook->addworksheet(); $format = $workbook->addformat(); $format->set_bold(); $format->set_color('red'); $format->set_align('center'); $col = 0; $row = 0; $worksheet->write($row, $col, "Hi Excel!"); $worksheet->write(1, $col, "Hi Excel!", $format); $worksheet->write(2, $col, 1.2345); $worksheet->write(3, $col, '=SIN(PI()/4)'); print 'Content-type: text/html' ."\n\n"; print <<EOF; <html><head><title>test</title></head><body>Ah!</body></head></html>

    • ベストアンサー
    • CGI
  • Spreadsheet::ParseExcelの空の行の値

    Spreadsheet::ParseExcelを使っていてよくわからないところがあったので、ご教授お願いします。 Excelの空のセルを正規表現でマッチさせるにはどうすれば良いのでしょうか? ***************************** use strict; use utf8; my cell = $sheet->{"Cells"}[$row][$col]; my val = ""; if($cell){ $val = $cell->Value; } if($val =~ "???"){ print "空のセルです"; }

    • ベストアンサー
    • Perl
  • SpreadSheet::ParseExcelで取得できない文字について

    Spreadsheet::ParseExcelでExcelから取得できない文字があります。 取得できない文字: 1.前腸 2.胚 3.葯 4.優性 情報をお持ちの方がいらっしゃいましたら宜しくお願いいたします。 環境はSolaris10でPerl5.8.4です。 以下のように取得時のフォーマットをFmtJapanにて指定しています。 my $oFmtJ =Spreadsheet::ParseExcel::FmtJapan->new(Code => 'euc'); わかっていること・・ 1)文字コードをeucとすると1から4まで全て取得できません。 2)文字コードをsjisとすると2、3が取得できません。 3)文字コードをutf8とすると1のみが取得できません。 1から4まで全て取得したいです。

  • cpanからモジュールをインストール後

    お世話になります。 ネットで調べcpanからモジュールをインストールしました。 # su - # perl -MCPAN -e shell 最初の起動時に質問が出てきてリターンと少しの設定後、 cpan>install XML::RSS # find `perl -e 'print "@INC"'` -name 'RSS.pm' -print ./.cpan/build/XML-RSS-1.05/lib/RSS.pm ./.cpan/build/XML-RSS-1.05/blib/lib/XML/RSS.pm の形でインストールされているのを確認しました。 で、その後、perlのCGIの方で実行すると、 Can't locate XML/RSS.pm in @INC (@INC contains: ./mylib /usr/lib/perl5/5.8.0/i386-linux-thread-multi /usr/lib/perl5/5.8.0 /usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.0 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.0 /usr/lib/perl5/vendor_perl .) at rss.cgi line 10. BEGIN failed--compilation aborted at rss.cgi line 10. になってしまうんですが、次はどうすればよいのでしょうか

    • ベストアンサー
    • Perl
  • perl jcode::convert 半角>全角

    perlでjcode::convertで 半角を全角に変換すると 正しく変換される時とされない時があります。 例えば、 sample1.plとsample2.plの my $message = 'の次の「ハンカク」の4文字は半角の文字です。 (注)ここにアップロードすると全角で表示されてしまいます。   この4文字を半角にして確認してください。 sample1.plではこの4文字が全角に変換されるのですが sample2.plではこの4文字は半角のままです。 なぜ全角に変換されないのでしょうか。 (Windows7, ActivePerl v5.16.3) ---sample1.pl------------ require "jcode.pl"; my $message = 'ハンカク文字は使えるかな?'; jcode::convert(\$message,"sjis","", "z"); print "$message\n"; --------------- ---sample2.pl------------ require "jcode.pl"; my $message = 'ハンカク文字'; jcode::convert(\$message,"sjis","", "z"); print "$message\n"; --------------- なお、どちらも以下のようなメッセージが表示されています。 これは何を意味しているのでしょうか。 defined(%hash) is deprecated at C:/Perl64/site/lib/jcode.pl line 684. (Maybe you should just omit the defined()?) defined(%hash) is deprecated at C:/Perl64/site/lib/jcode.pl line 693. (Maybe you should just omit the defined()?)

    • ベストアンサー
    • Perl
  • 日本語処理(文字コード)関係のエラーの対処法について

    日本語処理(文字コード)関係のエラーの対処法について ・環境は、XAMPPを使用しています。 perl、phpの簡単なプログラム(hello worldのようなもの)を実行して動きました。 ・asperlを文法チェックに使っています -実行したいサンプルプログラム- 原文(「SPIDERING HACKS中のプログラム」)は下記のutf8がshiftjisです。が、utf8に変更しました #!/xampp/perl/bin/perl use strict; use LWP::Simple; use Encode; use encoding 'utf8'; # 使用しているプラットフォームにあわせてください。 binmode(STDERR, ':raw :encoding(utf8)'); # 同上 my $id = shift @ARGV || '074'; # 引数の取得(デフォルトはニュージーランド) # 外務省海外安全ホームページ my $url = "http://www.anzen.mofa.go.jp/info/info4.asp?id=$id"; my $content = get($url); die "$url を読み込めませんでした。" unless defined $content; # $contentを読み込んで危険情報を確認する。 $content = decode('utf8', $content); # コンテンツのコード変換 $content =~ s/<!--(.*?)-->//gs; # HTML内のコメント削除 $content =~ / SELECTED>▼([^<]+)</; # 国名の取得 print "$1\n"; if ($content =~ /現在、危険情報は出ておりませんが、/) { print " 危険情報は出ていません。\n"; } else { print " 危険情報が出ています!\n"; }; print " 詳細はhttp://www.anzen.mofa.go.jp/を見てください。\n"; ローカル環境で、asperlを使用して文法チェックを行うと、エラーはありませんでした。 ところが、ローカル環境で実行すると、 Cannot decode string with wide characters at C:/xampp/perl/lib/Encode.pm line 174. というエラーが出ます。 これは、Encode.pm の 174行目で引っかかってている、ということでしょうか? だとしても、対処法が分かりません。 日本語処理で問題が発生しているようなのですが…。

    • ベストアンサー
    • Perl
  • perlのDigest::MD5;でのMD5算出が異なる

    perlのDigest::MD5;でのMD5算出が異なる 下記、スクリプトをレンタルサーバ上と、WindowsOS上で走らせてみたところ、おなじファイルにも関わらず、MD5が異なります。 何故でしょうか? #!/usr/local/bin/perl use strict; use warnings; use Digest::MD5; my $file = 'test.zip'; my $ctx = Digest::MD5->new; open my $fh, "<$file"; $ctx->addfile($fh); my $md5 = $ctx->hexdigest; close($fh); open my $fh2, ">>md5.txt"; print $fh2 "$file $md5\n"; print "$file $md5\n"; close $fh2;

    • ベストアンサー
    • Perl
  • HTML::FillInFormが使えない(インストールできない?)

    HTML::FillInFormをCPAN経由でインストールしましたが、うまく動きません。対処方法を教えていただけないでしょうか。 状況は以下のとおりです。 CPAN経由でHTML::Templateはインストールして使えているのでCPANの原因ではない模様。 HTML::FillInFormを使うPerlを実行すると以下のメッセージが出る Can't locate HTML/FillInForm.pm in @INC (@INC contains: /usr/local/lib/perl5/5.8.8/BSDPAN /usr/local/lib/perl5/site_perl/5.8.8/mach /usr/local/lib/perl5/site_perl/5.8.8 /usr/local/lib/perl5/site_perl /usr/local/lib/perl5/5.8.8/mach /usr/local/lib/perl5/5.8.8 .) at ***(PGM名).cgi line 34, <DATA> line 846. line34にはuse HTML::FillInFormと記述している。 教えてgooで検索したところ、 http://oshiete1.goo.ne.jp/qa2007575.html に同様の話が出ていたので、回答へのお礼を参考に、 処理を実行。 ところが、make installの時点で以下のメッセージが出てインストールできません ERROR: Can't create '/usr/local/lib/perl5/site_perl/5.8.8/mach' Do not have write permissions on '/usr/local/lib/perl5/site_perl/5.8.8/mach' !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! at -e line 1 *** Error code 13 CPAN 経由でインストールを再度試みても、インストールされていると誤認識されているのか、 HTML::FillInForm is up to date (2.00). と出ます。 原因と解決方法を教えていただけないでしょうか。 FillInFormの前に別のモジュールをインストールしてないといけないのでしょうか?

    • ベストアンサー
    • Perl
  • LibXMLのエラーについて

    こんにちは。 XMLファイルを読み込む処理をテストしているのですがlibXMLが動作してくれません。 次の手順でインストール~実行したのですが何がいけないのでしょうか? どこか問題点がありましたら教えてください。 LibXMLは「/usr/local/lib/perl/5.8.4/auto/XML/LibXML」に見えます。 (perlを始めたばかりなので他に必要な情報がありましたらコメント下さい。) 1.libxml2-2.6.23.tar.gzをインストール 2.CPANでXML::LibXML、関連モジュールをインストール 3.次のコードを実行 #!/usr/local/bin/perl use XML::LibXML; my $parser = XML::LibXML->new; my $xmlfile = $parser->$contents; print Dumper($xmlfile)."\n"; ※$contentsには単純なXMLフォーマットのデータが入っています。 4.エラーが表示される Can't locate auto/XML/LibXML/<?xml version="1.0" encoding="euc-jp" ?> : :(XMLファイルの内容) : .al in @INC (@INC contains: perllib /etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at perllib/testperl.pm line 10

    • ベストアンサー
    • Perl