【发布时间】:2019-01-16 22:39:07
【问题描述】:
我在 Perl 脚本中有三个函数来解析 Excel 文件以获取所需的输出 Excel 文件。我得到了正确的输出,但是我得到一个错误
文件错误:数据可能已丢失
可能根本原因是在文件中两次写入同一个 Excel 单元格。
如何在维护脚本中的功能的同时消除此错误?
输入文件
A B
Apples Carrots
Oranges Broccoli
Grapes Spinach
想要的输出文件
A B
Apples Carrots
Oranges Broccoli
PEACHES ASPARAGUS
Perl 代码
use v5.10.0;
use warnings;
use Spreadsheet::ParseExcel;
use Spreadsheet::ParseExcel::SaveParser;
use Spreadsheet::WriteExcel;
my $parser = Spreadsheet::ParseExcel::SaveParser->new();
my $workbook_R = $parser->parse('C:\Perl\databases\Fruits_and_Veggies.xls');
my $workbook_W = Spreadsheet::WriteExcel->new('C:\Perl\databases\New_Fruits_and_Veggies.xls');
my $worksheet_W = $workbook_W->add_worksheet();
for our $worksheet_R ( $workbook_R->worksheets() ) {
my ( $row_min, $row_max ) = $worksheet_R->row_range();
my ( $col_min, $col_max ) = $worksheet_R->col_range();
for our $row ( $row_min .. $row_max ) {
for our $col ( $col_min .. $col_max ) {
FruitStand();
VeggieStand();
ComboStand();
#------------------------------------------------------------------------------
# sub FruitStand - parsing: replace Grapes with PEACHES
#------------------------------------------------------------------------------
sub FruitStand {
# if the cell contains Grapes write 'PEACHES' instead
my $cell_grapes = $worksheet_R->get_cell( $row, $col );
if ( $cell_grapes->value() =~ /Grapes/ ) {
$worksheet_W->write($row, $col,"PEACHES");
}
}
#------------------------------------------------------------------------------
# sub VeggieStand - parsing: repalce Spinach with ASPARAGUS
#------------------------------------------------------------------------------
sub VeggieStand {
# if the cell contains Spinach write 'ASPARAGUS' instead
my $cell_veggies = $worksheet_R->get_cell( $row, $col );
# my $cell = $worksheet_R->get_cell( $row, $col );
if (/ $cell_veggies->value() =~ /Spinach/ ) {
$worksheet_W->write($row, $col,"ASPARAGUS");
}
}
#------------------------------------------------------------------------------
# Writing all fruits and veggies with the 2 changes (PEACHES and ASPARAGUS)
#------------------------------------------------------------------------------
sub ComboStand {
my $cell = $worksheet_R->get_cell( $row, $col );
$worksheet_W->write($row, $col, $cell->value()) ;
}
}
}
}
【问题讨论】:
-
错误来自同一来源(一个单元格被多次写入)-我了解您想要消除错误并询问如何做到这一点。 “可能重复”将帮助遇到相同错误的其他人查看其他相关帖子。
-
好的。尽我所能。
-
@user1608954:请不要这么快就拒绝您要求的帮助。链接的问题看起来和我一模一样。