有没有办法轻松获取3个文本文件并通过脚本将其转换为多标签Excel工作表?
文件是file1.txt,文件2.txt,file3.txt - 我希望它输出到带有3个标签的excelsheet1.xls。
答案 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。