Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用spreadsheet::ParseXLSX从.xlsx文件复制单元格格式,以使用EXCEL:WRITER::xlsx写入另一个单元格?_Python_Excel_Perl_Projects And Solutions - Fatal编程技术网

Python 使用spreadsheet::ParseXLSX从.xlsx文件复制单元格格式,以使用EXCEL:WRITER::xlsx写入另一个单元格?

Python 使用spreadsheet::ParseXLSX从.xlsx文件复制单元格格式,以使用EXCEL:WRITER::xlsx写入另一个单元格?,python,excel,perl,projects-and-solutions,Python,Excel,Perl,Projects And Solutions,请检查下面的代码。如果我将$format从最后一行移到$sheet_write->write($row,$col,$cell->value),那么它就可以正常工作 我声明在excel_2电子表格中添加该格式,该格式将由“excel::Writer::XLSX;”软件包编写。我正在处理来自另一个阅读器解析器的单元格格式($format=$cell->get_format();)“使用电子表格::ParseXLSX”。任何帮助都将不胜感激。我希望这两种不同的方法之间存在一些不匹配 #!/home/u

请检查下面的代码。如果我将$format从最后一行移到$sheet_write->write($row,$col,$cell->value),那么它就可以正常工作

我声明在excel_2电子表格中添加该格式,该格式将由“excel::Writer::XLSX;”软件包编写。我正在处理来自另一个阅读器解析器的单元格格式($format=$cell->get_format();)“使用电子表格::ParseXLSX”。任何帮助都将不胜感激。我希望这两种不同的方法之间存在一些不匹配

#!/home/utils/perl-5.24/5.24.2-058/bin/perl -w
use strict;
use warnings;


use Excel::Writer::XLSX;
use Spreadsheet::ParseXLSX;


my $parser   = Spreadsheet::ParseXLSX->new();
my $workbook = $parser->parse('abc.xlsx');
my $excel_2 = Excel::Writer::XLSX -> new ('abc_copied.xlsx');

my $format = $excel_2->add_format();

if ( !defined $workbook ) {
    die $parser->error(), ".\n";
}


for my $worksheet ( $workbook->worksheets() ) {

    my ( $row_min, $row_max ) = $worksheet->row_range();
    my ( $col_min, $col_max ) = $worksheet->col_range();
    printf("Sheet: %s\n", $worksheet->{Name});

    my $sheet_write = $excel_2->add_worksheet($worksheet->{Name});

    for my $row ( $row_min .. $row_max ) {
    for my $col ( $col_min .. $col_max ) {

            my $cell = $worksheet->get_cell( $row, $col );
            next unless $cell;

            print "Row, Col    = ($row, $col)\n";
            #print "Value       = ", $cell->value(),       "\n";
            #print "Unformatted = ", $cell->unformatted(), "\n";
            #print "\n";
            $format= $cell->get_format();
            $sheet_write->write($row, $col,$cell -> value,$format);

        }
    }
}

电子表格::ParseXLSX的cell->get_format生成的对象与Excel::Writer::XLSX在其
write
方法中预期的格式对象不同。尽管它们都处理电子表格,但它们是不同的模块,不太可能以这种方式共享一个类

Excel::Writer::XLSX的format对象的属性有很好的文档记录:

我看到有一个克隆格式模块:

没有个人经验,但看起来很有希望。。。否则,您可能必须转储解析模块的内容,找出对您最重要的内容,然后自己进行翻译。但是说真的,试试这个模块


或者,如果这是在Windows计算机上,如果您被限制在Perl上,Win32::OLE可能会更好地为您处理此类任务(如果您只关注Excel电子表格操作,这当然不是我的首选)。尽管它们都处理电子表格,但它们是不同的模块,不太可能以这种方式共享一个类

Excel::Writer::XLSX的format对象的属性有很好的文档记录:

我看到有一个克隆格式模块:

没有个人经验,但看起来很有希望。。。否则,您可能必须转储解析模块的内容,找出对您最重要的内容,然后自己进行翻译。但是说真的,试试这个模块


或者,如果这是在Windows计算机上,如果您使用Perl,那么Win32::OLE可能会更好地为您处理这种类型的任务(如果您只关注Excel电子表格操作,这当然不是我的首选)。

这是我现在使用的第三个用于复制just格式的软件包。它仍然没有将条件格式和其他功能(如合并列等)从一个.XLSX工作表复制到另一个工作表。输出看起来很难看。是否只有一个包可以完成所有工作?我对其他脚本语言也持开放态度。我正在对单元格值进行一些操作,所以我还需要逐个单元格进行复制。我还在这里添加了一个新代码-现在我愿意接受任何类型的解决方案,他们允许我对每个单元格进行操作。我可以从python、excel vb或perl软件包开始。问题已经解决,所以我无法回答。。。我强烈建议使用VBA来实现这一点。这是一种糟糕的语言,无法判断它是否希望成为OOP,但hand's是做任何与MS Office相关的事情的最佳语言,它把所有这些都当作面包和黄油来处理。最棒的是,你不需要做任何繁重的工作。。。您可以记录您的操作,让它为您完成大部分工作。请重新打开它。让我检查一下是否可以使用其他脚本将相同的规则应用于1000张excel工作表。问题仍然没有解决。。。可能会将其作为VBA问题重新发布?这是我现在用于复制just格式的第三个包。它仍然没有将条件格式和其他功能(如合并列等)从一个.XLSX工作表复制到另一个工作表。输出看起来很难看。是否只有一个包可以完成所有工作?我对其他脚本语言也持开放态度。我正在对单元格值进行一些操作,所以我还需要逐个单元格进行复制。我还在这里添加了一个新代码-现在我愿意接受任何类型的解决方案,他们允许我对每个单元格进行操作。我可以从python、excel vb或perl软件包开始。问题已经解决,所以我无法回答。。。我强烈建议使用VBA来实现这一点。这是一种糟糕的语言,无法判断它是否希望成为OOP,但hand's是做任何与MS Office相关的事情的最佳语言,它把所有这些都当作面包和黄油来处理。最棒的是,你不需要做任何繁重的工作。。。您可以记录您的操作,让它为您完成大部分工作。请重新打开它。让我检查一下是否可以使用其他脚本将相同的规则应用于1000张excel工作表。问题仍然没有解决。。。也许把它作为VBA问题重新发布?