【问题标题】:Read one worksheet from Excel workbook in Perl在 Perl 中从 Excel 工作簿中读取一个工作表
【发布时间】:2011-07-14 21:04:53
【问题描述】:

我有一个 perl 脚本读取 Excel 文件并使用 perl 模块“Spreadsheet::ParseExcel::Simple; 我想要的是我的脚本只读取一个选项卡而不是读取电子表格上的所有选项卡。这里看起来喜欢脚本的部分。

# ### Use a Spreadsheet CPAN module for parsing Excel spreadsheet

require Spreadsheet::ParseExcel::Simple;
my $xls = Spreadsheet::ParseExcel::Simple->read('/opt/test.xls');

$Output_Circuit_file      = "/opt/result.text";

############################################################################
$err_idx = 0;
$out_idx = 0;
@date_var = localtime;

$date = sprintf("%02d",($date_var[4] + 1)) . '/' . sprintf("%02d",$date_var[3]) . '/' . ($date_var[5] + 1900);

## ############# 

foreach my $sheet ($xls->sheets) {
   while ($sheet->has_data) {
       my @words = $sheet ->next_row;
       $ctr++;

任何人都可以提供帮助,我可以在其中修改以阅读我的脚本只读选项卡“A”并忽略其他所有内容。

【问题讨论】:

  • “标签”是什么意思?工作表?如果是这样,请不要遍历所有这些,而是​​选择您感兴趣的一个
  • 对不起,我的意思是工作表。我已经删除了 foreach my $sheet ($xls->sheets) { to -> @sheets = $xls->sheets; $sheet = $sheets[0];但现在剧本没有读。任何想法!再次感谢您的时间!
  • 您是否使用“my”来声明变量?如果不是,它将在使用严格时失败。如果您需要更多,请发布您遇到的错误
  • 我使用“我的”..奇怪的部分是当我运行脚本时没有产生错误,即使脚本运行它也只是空白。你同意 Keveman 代码吗?应该是其他原因导致的问题?
  • 我认为有一个更深层次的问题,您可能希望放弃使用 Spreadsheet::ParseExcel::Simple,而直接使用 Spreadsheet::ParseExcel。当我查看 Spreadsheet::ParseExcel::Simple 的代码时,它依赖于未记录的内部属性。它们可能曾被支持一次,但 Spreadsheet::ParseExcel::Simple 上次更新是在五年前,但 Spreadsheet::ParseExcel 得到了积极维护。不同之处在于 MaxRow 属性,如果缺少该属性,则不会返回任何数据。 Spreadsheet::ParseExcel 并不复杂,它是我使用过的可靠的。

标签: perl perl-module xls


【解决方案1】:

foreach my $sheet ($xls->sheets) 这个循环导致您阅读所有工作表(工作表),这是 excel 中选项卡的另一个词。只需阅读$xls->sheets 中的第一篇,就知道了

@sheets = $xls->sheets;
$sheet = $sheets[0];
if($sheet->has_data) {
   ....
}

【讨论】:

  • 首先非常感谢!!我已经按照您的要求更改了脚本,但现在没有从我的电子表格中读取任何内容。
  • 感谢您的宝贵时间,我在当前代码中添加了以下行,它运行良好。 $sheetname= $sheet->{sheet}->{Name}; # 工作表名称 if ($sheetname !~ 'Test') { next; }
【解决方案2】:

添加以下行并读取特定的工作表名称

   $sheetname= $sheet->{sheet}->{Name}; 
   if ($sheetname !~ 'Test') { next; }

感谢大家对我的帮助!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-23
    • 2011-05-17
    • 1970-01-01
    • 2021-06-16
    • 1970-01-01
    • 2023-01-26
    • 2019-10-25
    • 2021-11-18
    相关资源
    最近更新 更多