プロが教えるわが家の防犯対策術!

Perlを使い、エクセル表からデータを読み込みテキストファイルを生成したいと思っています。
Perlについて知識はほとんどありません。
サンプル記述等で教えていただけたら助かります。

下記のようなエクセル表があるとします。
<"PARAMETER.xls">
  A    B   C
+-------+------+--------+
1| XXX | 32 | 0000 |
+-------+------+--------+
2| YYY |  8 | 000A |
+-------+------+--------+
3| ZZZ | 16 | 1000 |
+-------+------+--------+
4|    |  8 | 000A | (注)"A"列には記入が無いので無視。
+-------+------+--------+
5| WWW | 32 | F000 |
+-------+------+--------+

エクセル表を読み込み、下記の変換方法に従い
テキストファイルを生成したいのです。

●変換方法(基本構文)
---------------------------------
if(DTin = "C") <--"C" 列のデータと比較します。
"A" = DTout("B-1":0); <--"A" 列の変数名に、"B-1"の値を代入します。
<-- 改行します。
---------------------------------

変換後 生成されたファイルは下記を考えています。
◆生成ファイル "Source.txt"
----------------------------------
if(DTin = 0000)
XXX = DTout(31:0);

if(DTin = 000A)
YYY = DTout(7:0);

if(DTin = 1000)
ZZZ = DTout(15:0);

if(DTin = F000)
WWW = DTout(31:0);

----------------------------------
(注)4行目の"A"列には記入が無いので無視します。

以上、ざっくりとした説明で申し訳ありませんが、
よろしくお願いいたします。

A 回答 (1件)

> Perlについて知識はほとんどありません。


ですと、ちょっと辛いと思います。

Excelのシートを読む方法はありますが、初心者では取っつきにくいので、お勧めできません。(まず、そのためのモジュールをインストールしなければならないでしょう)

なので、一旦テキスト形式で保存して、それを操作するのが楽です。
カンマが使われていないのならCSV形式が便利です

while(<>) { # 一行ずつ読み込む
chop ; #改行文字を削除する
@a=split(/,/); #カンマで分割して配列に入れる
# $a[0] : A列、$a[1]: B列 $a[2]: C列....となる
if ( $a[0] ne '' ){
#A列が空でなければ出力
printf "if(DTin = %s)\n%s = DTout(%d:0);\n\n",$a[2],$a[0],$a[1]-1;
}
}

実行は
perl PARAMETER.csv > Source.txt
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
参考にして勉強します。

お礼日時:2010/03/06 01:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!