【问题标题】:Convert csv file into Multi tab xls (excel) file using perl使用 perl 将 csv 文件转换为 Multi tab xls (excel) 文件
【发布时间】:2014-12-27 16:13:22
【问题描述】:

我正在使用 perl 模块 WriteExcel 来转换 |分隔文本文件到 xls 文件,我使用下面的代码这样做

#!/usr/bin/perl -w
use strict;
use Spreadsheet::WriteExcel;

# Create a new workbook and add a worksheet
my $workbook  = Spreadsheet::WriteExcel->new($filename);
my $worksheet = $workbook->add_worksheet("Colorful Example");

open(FH,"<$my_path/source_file.txt")
   or die "Cannot open file: $!\n";
my ($x,$y) = (0,0);
while (<FH>){
   chomp;
   my @list = split /\t/,$_;
   foreach my $c (@list){
      $worksheet->write($x, $y++, $c);
   }
   $x++; $y=0;
}
close(FH);
$workbook->close();     # Close Workbook

通过此代码,我可以将文件转换为单选项卡 Excel。 我想知道当行数超过 65000 时,我如何将文本文件转换为多选项卡 xls(具有多个工作表的 Excel 文件)文件。

【问题讨论】:

  • 是的,使用相同的包。

标签: excel perl csv


【解决方案1】:

您正在使用此行添加工作表。

my $worksheet = $workbook->add_worksheet("Colorful Example");

您需要做的是检查您的循环中处理行的位置是否超出了行限制,如果超出,请替换工作表句柄。

$worksheet = $workbook->add_worksheet('foo') if $rows > 65_000;

【讨论】:

  • 在你的代码中 $rows 是从哪里计算出来的??
  • 我猜那是你的$x。请记住始终选择好的描述性变量名称,以免混淆。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-30
  • 2014-03-13
  • 1970-01-01
  • 2014-07-10
  • 1970-01-01
  • 2011-10-05
相关资源
最近更新 更多