Как удалить лист в существующем файле xls, используя Spreadsheet :: ParseExcel :: SaveParser? - PullRequest
1 голос
/ 10 июня 2019

Я хочу удалить рабочий лист из существующего xls файла , который я модифицирую, для модуля Spreadsheet::ParseExcel::SaveParser.Я не смог найти ничего на сайте CPAN.Я нашел код, который удаляет листы с конца, но я хочу удалить лист на основе его имени.Я прилагаю код.Пожалуйста, объясните команду соединения в этом коде тоже.Спасибо Вот ссылка, которую я нашел:

https://www.perlmonks.org/?node_id=722716

#!/usr/bin/perl -w
use strict;
use Spreadsheet::ParseExcel;
use Spreadsheet::ParseExcel::SaveParser;
my ($INFILE,$OUTFILE)=("in.xls","out.xls");
my $oExcel = new Spreadsheet::ParseExcel::SaveParser;
my $oBook = $oExcel->Parse($INFILE);

splice(@{$oBook->{Worksheet}},1,1);
$oBook->{SheetCount}--;

$oExcel->SaveAs($oBook, $OUTFILE);

1 Ответ

2 голосов
/ 11 июня 2019

Помогает ссылка Perlmonks в вопросе . Если вы хотите удалить конкретный лист, используйте строку

splice(@{$oBook->{Worksheet}},1,1);

где исходный представляет, с какого листа вы хотите удалить, а следующий - сколько листов вы хотите удалить из смещения.

Это то же самое, что и обычная команда splice.

После этого используйте команду $oBook->{SheetCount}--; для удаления рабочих листов.

...