Как скопировать формат ячейки .xlsx с помощью считывателя «Excel :: Writer :: XLSX» в скопированную ячейку с помощью средства записи Spreadsheet :: WriteExcel? - PullRequest
0 голосов
/ 11 марта 2020

Я новичок в Perl, пожалуйста, поддержите меня, если он очень базовый c. Приведенный ниже код прекрасно работает, копируя в Excel значение в другое. У меня проблемы с копированием формата. Мне нужно скопировать значение формата из файла чтения, а затем назначить его для записи. Ячейка - это переменная, которую нужно изменить.

Код: -

#!/home/utils/perl-5.24/5.24.2-058/bin/perl -w
use warnings;
use Spreadsheet::XLSX;
use Excel::Writer::XLSX;
#reading the sheet using below perl parser
my $excel = Spreadsheet::XLSX -> new ('abcd.xlsx');
#writing the sheet using below parser
my $excel_2 = Excel::Writer::XLSX -> new ('abcd_N.xlsx');

my $format = $excel_2->add_format();
#loop to read the hseet and write
foreach my $sheet (@{$excel -> {Worksheet}}) 
{
    printf("Sheet: %s\n", $sheet->{Name});
    my $sheet_write = $excel_2->add_worksheet($sheet->{Name});
    $sheet -> {MaxRow} ||= $sheet -> {MinRow};
    foreach my $row ($sheet -> {MinRow} .. $sheet -> {MaxRow}) 
    {
        $sheet -> {MaxCol} ||= $sheet -> {MinCol};
        foreach my $col ($sheet -> {MinCol} ..  $sheet -> {MaxCol})
        {
            my $cell = $sheet -> {Cells} [$row] [$col];
            if ($cell)
            {
                printf("( %s , %s ) => %s\n", $row, $col, $cell -> {Val});
                $sheet_write->write($row, $col,$cell -> {Val},$self);


            }

        }
    }

}

1 Ответ

0 голосов
/ 24 марта 2020

Я не помню, чтобы электронная таблица: XLSX обладает «способностью» копировать форматирование ячеек. Это очень простой пакет c cpan для получения содержимого ячеек.

Вы смотрели на это? https://metacpan.org/pod/Spreadsheet :: ParseXLSX

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...