gpt4 book ai didi

perl - 需要更多有关如何使用 Spreadsheet::ParseExcel 的示例

转载 作者:行者123 更新时间:2023-12-02 07:24:08 28 4
gpt4 key购买 nike

我一直在使用 Spreadsheet::ParseExcel列出电子表格的内容。我见过几个关于如何转储整个电子表格的示例。我真的很想看看如何更有选择性地使用这个脚本。

下面来自 IBM 的示例基本上转储了所有具有数据的单元格的内容。

#!/usr/bin/perl -w

use strict;
use Spreadsheet::ParseExcel;

my $oExcel = new Spreadsheet::ParseExcel;

die "You must provide a filename to $0 to be parsed as an Excel file" unless @ARGV;

my $oBook = $oExcel->Parse($ARGV[0]);
my($iR, $iC, $oWkS, $oWkC);
print "FILE :", $oBook->{File} , "\n";
print "COUNT :", $oBook->{SheetCount} , "\n";

print "AUTHOR:", $oBook->{Author} , "\n"
if defined $oBook->{Author};

for(my $iSheet=0; $iSheet < $oBook->{SheetCount} ; $iSheet++)
{
$oWkS = $oBook->{Worksheet}[$iSheet];
print "--------- SHEET:", $oWkS->{Name}, "\n";
for(my $iR = $oWkS->{MinRow} ;
defined $oWkS->{MaxRow} && $iR <= $oWkS->{MaxRow} ;
$iR++)
{
for(my $iC = $oWkS->{MinCol} ;
defined $oWkS->{MaxCol} && $iC <= $oWkS->{MaxCol} ;
$iC++)
{
$oWkC = $oWkS->{Cells}[$iR][$iC];
print "( $iR , $iC ) =>", $oWkC->Value, "\n" if($oWkC);
}
}
}

有人可以给我一个例子,说明如何为每一行的特定列指定一些操作吗?

例如,我有一个 7 列 n 行的电子表格。我想以某种方式重新格式化每列中的数据。也许我想为每一行获取第 6 列,并将一些文本附加到存储在单元格中的字符串的末尾。如何设置?

最佳答案

要修改 Excel 文件,Spreadsheet::ParseExcel::SaveParser模块非常有用。它允许您读取文件、进行修改,然后将更改的内容写入新文件。这是一个简单的例子:

use strict;
use warnings;

use Spreadsheet::ParseExcel;
use Spreadsheet::ParseExcel::SaveParser;

my $excel_file_name = $ARGV[0];
my $parser = Spreadsheet::ParseExcel::SaveParser->new();
my $workbook_orig = $parser->Parse($excel_file_name);

# We will edit column 7 of the first worksheet.
my $worksheet = $workbook_orig->worksheet(0);
my $EDIT_COL = 6;

my ($row_min, $row_max) = $worksheet->row_range();
for my $r ($row_min .. $row_max){
my $cell = $worksheet->get_cell($r, $EDIT_COL);
unless (defined $cell){
next; # Modify as needed to handle blank cells.
}
my $val = $cell->value . '_append_text';
$worksheet->AddCell( $r, $EDIT_COL, $val, $cell->{FormatNo} );
}

# You can save the modifications to the same file, but when
# you are learning, it's safer to write to a different file.
$excel_file_name =~ s/\.xls$/_new.xls/;
$workbook_orig->SaveAs($excel_file_name);

有关许多其他示例,请参阅优秀的文档:

关于perl - 需要更多有关如何使用 Spreadsheet::ParseExcel 的示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3217204/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com