首页 > 其他 > 详细

excel转txt工具

时间:2017-05-22 16:21:19      阅读:339      评论:0      收藏:0      [点我收藏+]

    有个任务需要读好多eccel,实际读起来并不方便,变手工把ecxcel转换成文本文档,心累。。。。于是闲暇写了个ecxcel转txt的小工具。主要是用的Spreadsheet::XLSX。

use strict;
use warnings;
use strict;
use Spreadsheet::XLSX;
die "Usage :perl $0 <xlsx> <resultDIR>\n" unless @ARGV==2; ####需要输入需要转换的ecxel文件 以及生成结果文件的路径
my $file=shift @ARGV;
my $dir=shift @ARGV;
my $excel=Spreadsheet::XLSX->new($file);
foreach my $sheet(@{$excel->{Worksheet}}){
          my $name=$sheet->{Name};###sheet名字
         open OUT,">$dir/$name.txt";##默认结果是一个sheet转换成一个文本文档,名字为sheet名字 ,可自行调整
         $sheet->{MaxRow}||=$sheet->{MinRow};
         foreach my $row ($sheet->{MinRow}..$sheet->{MaxRow}){
                    $sheet->{MaxCol}||=$sheet->{MinCol};
                   foreach my $col($sheet->{MinCol}..$sheet->{MaxCol}){
                            my $cell=$sheet->{Cells}[$row][$col];
                            if($cell){
                              print OUT"$cell->{Val}\t";
                            }
                   }
                  print OUT"\n";
      }
}

写完之后,发现每次只能转换一个文件,于是就把它做成了一个包,名字为excel2txt.pm,随便用~

主程序perl.pl

use strict;
use warnings;
use package::excel2txt;
my $dir="/home/escel2txt";
my @sample=("test");
foreach my $sample(@sample){
          my $file="$dir/$sample.xlsx";
          my $reportdir="/home/escel2txt";
         package::excel2txt::change($file,$reportdir);##在report下批量生成转换过后的文档
}

包:excel2txt.pm

package package::excel2txt;

use strict;
use warnings;
use strict; 
use Spreadsheet::XLSX;

sub change{
my $file=shift @_;
my $dir=shift @_;
my $excel=Spreadsheet::XLSX->new($file);
  foreach my $sheet(@{$excel->{Worksheet}}){
          my $name=$sheet->{Name};###sheet名字
         open OUT,">$dir/$name.txt";##默认结果是一个sheet转换成一个文本文档,名字为sheet名字 ,可自行调整
         $sheet->{MaxRow}||=$sheet->{MinRow};
         foreach my $row ($sheet->{MinRow}..$sheet->{MaxRow}){
                    $sheet->{MaxCol}||=$sheet->{MinCol};
                   foreach my $col($sheet->{MinCol}..$sheet->{MaxCol}){
                            my $cell=$sheet->{Cells}[$row][$col];
                            if($cell){
                              print OUT"$cell->{Val}\t";
                            }
                   }
                   print OUT"\n";
          }
     }

}

1

excel转txt工具

原文:http://www.cnblogs.com/gui-/p/6889608.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!