Perl - 如果新单元格有文本,则将文本附加到单元格

时间:2014-11-14 09:10:42

标签: perl

我的数据看起来像这样:

20110627 ALPHA BETA GAMMA
 217722 1425 1767 0.654504367955466 0.811585416264778 -0.157081048309312 

我正在使用John McNamara的WriteExcel模块(即tab2xls程序):

use warnings;
use strict;
use Spreadsheet::WriteExcel;
use Scalar::Util qw(looks_like_number);
use Spreadsheet::ParseExcel; 
use Spreadsheet::ParseExcel::SaveParser;
use Spreadsheet::ParseExcel::Workbook;

if (($#ARGV < 1) || ($#ARGV > 2)) {
    die("Usage: tab2xls tabfile.txt newfile.xls\n");
};
open (TABFILE, $ARGV[0]) or die "$ARGV[0]: $!";

my $workbook  = Spreadsheet::WriteExcel->new($ARGV[1]);
my $worksheet = $workbook->add_worksheet();
my $row = 0;

while (<TABFILE>) {
    chomp;
    # Split on single space
    my @Fld = split('\s', $_);

    my $col = 0;
    foreach my $token (@Fld) {
        if (looks_like_number($token)) {
            $worksheet->write($row, $col, $token);
            $col++;
        } else {
            $worksheet->write($row, $col, $token);
            #$col++;
        }
    }
    $row++;
}

我想做两件事:首先,将文本保存在一个单元格中,将数字保存在单独的单元格中。我的代码目前将“ALPHA”放在一个单元格中,但是没有将BETA和GAMMA放在这个单元格上(如果单元格上已经存在某些内容,似乎写入不附加文本,因此BETA和GAMMA根本不会出现在生成的excel文件。)

其次,在我提供的数据的情况下,当第二行中有空格时,我想在第一行中移动第二行的数据,其中每个数字将在一个单独的单元格中。< / p> 你能帮帮我吗?谢谢!

编辑1:

我没有看到任何答案:D所以我想改变我的代码来执行以下操作:

foreach my $token (@Fld) {
        if (looks_like_number($token)) {
            $worksheet->write($row, $col, $token);
            $col++;
        } else {
            $totalToken = $totalToken." ".$token;
            print "Total token is $totalToken \n";
            $worksheet->write($row, $col, $totalToken);
            $col++;
        }
    }
    $row++;

在这种情况下,我创建了一个变量$ totalToken,它附加了文本单元格..然后行中的最后一个文本单元格将所有文本单元格组合在一起,但是我需要摆脱行中的前一个文本单元格?有什么想法吗?

0 个答案:

没有答案