有没有办法轻松获取3个文本文件,并通过脚本将其转换为多标签excel表?

时间:2010-12-02 10:45:35

标签: perl excel vbscript

有没有办法轻松获取3个文本文件并通过脚本将其转换为多标签Excel工作表?

文件是file1.txt,文件2.txt,file3.txt - 我希望它输出到带有3个标签的excelsheet1.xls。

1 个答案:

答案 0 :(得分:4)

您没有提及文本文件的格式,因此很难使用真正的示例代码,但您可以使用Spreadsheet::WriteExcel。查看add_worksheet()方法以创建新选项卡。

鉴于你说每行是一个数字后跟文本我假设这是每行两列,空格分隔第一列和第二列,只有第一列中的数字。如果不是这样,则需要调整下面的正则表达式。也就是说,这是一些示例代码。

#!/usr/bin/env perl
use strict;
use warnings;
use Spreadsheet::WriteExcel;

sub read_file{
        my $f = shift;
        my @row;
        open(my $fh, '<', $f) or die $!;
        while(<$fh>){
                chomp;
                s/^(d+)s+//; # assuming format of "1 Text heren2 More textn"
                if(defined $1){
                        push(@row, [$1, $_]);
                }
        }
        close($fh) or die $!;

        return @row;
}

if($#ARGV < 1){
        die "$0: file1 [file2 ... filen] output.xls\n";
}
my $xl = Spreadsheet::WriteExcel->new(pop);

foreach my $file (@ARGV){
        if( -f $file){
                my @rows = read_file($file);
                my $sheet = $xl->add_worksheet($file);
                for my $row (0..$#rows){
                        my @cols = @{$rows[$row]};
                        for my $col (0..$#cols){
                                $sheet->write($row, $col, $cols[$col]);
                        }
                }
        }
}

输入文件在命令行中给出并按顺序处理,将每个文件转换为以文件名命名的选项卡。输出文件名在命令行的最后一个或多个输入文件名后给出。

编辑:现在包括他的评论中提到的改进FM以及用于指定输出文件名的简单CLI。