Tag: perl

范围对象在Excel中的位置

我想弄清楚如何在Excel(2007) – 工作表中获取所选范围的位置。 是否有类似于$self->{EXCEL}->ActiveCell->Row单元格$self->{EXCEL}->ActiveCell->Row ( self->{EXCEL}是一个Excel对象)? 我尝试->Selection->Range , ->ActiveSheet->Range ,并作为一个解决方法->Range->Row ->ActiveSheet->Range ->Range->Row , ->Range->Rows ->ActiveSheet->Range ->Range->Rows与Excel和Worksheet对象都没有成功。 最奇特的输出是两个单元对象,一个用于起始地址,另一个用于结束地址。 感谢任何有用的提示! ===更新=== 我现在成功地使用了命令$self->{EXCEL}->Selection->Address(); 检索所选范围的地址。 默认情况下,我在“A1”格式( $E$1:$G$14 )中获取地址。 使用->Address("ToReferenceStyle:=xlR1C1")但不会返回“R1C1”格式的地址,因为我预料… 错误的命令? 无知的Excel? Thanky在任何有帮助的提示再次!

无法使用Excel :: Writer :: XLSX导出大型数据集

我似乎无法使用Excel :: Writer :: XLSX将超过85,000行导出到.xlsx文件。 导出超过85,000行的数据会生成一个5KB文件,其中没有数据。 在导出85,000条logging或90,000条logging(大约40秒)时,该脚本的运行时间大致相同。 85,000行的文件是7.9MB,而90,000行的文件只有5KB。 使用top监视导出脚本,我的perl脚本只显示大约1%的内存使用量,几秒钟后就消失了。 我是新来的使用Perl,所以我不知道是否有另一个进程,我应该监测,看看它是否内存不足。 当导出85,000行或更less的行时,perl脚本实际上显示大约7%的内存使用量,并且在导出完成之前它仍然保留在进程列表中。

使用Perl和LibXML处理Excel XML文件

我正在尝试处理保存为XML电子表格的Excel文件中的数据。 在做了大量的研究(之前我没有做过太多的XML处理)之后,我仍然无法使其工作。 这是我最小的文件的内容: <?xml version="1.0"?> <?mso-application progid="Excel.Sheet"?> <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:sbmextension="http://www.serena.com/SBM/XSLT_Extension"> <Worksheet ss:Name="index"> </Worksheet> </Workbook> 而我的脚本: use XML::LibXML; use Data::Dumper; my $filename = $ARGV[0]; my $parser = XML::LibXML->new(); my $doc = $parser->parse_file($filename); my $xc = XML::LibXML::XPathContext->new( $doc->documentElement ); my $xpath = '/Workbook/Worksheet/@ss:Name'; print Dumper $xc->findvalue($xpath); 但是,如果我删除(默认命名空间?)xmlns =“urn:schemas-microsoft-com:office:spreadsheet”,那么它开始工作。 请你能告诉我我错过了什么吗? 我想我可以在parsing文档之前删除它,但我想了解我做了什么错误:)。 提前致谢。

Perl – 找不到文件

#!"C:\Perl64\bin\perl.exe" use CGI; use strict; use Spreadsheet::ParseExcel; my $FileName = "C:\excel\Onsite_Report(15).xlsx"; my $parser = Spreadsheet::ParseExcel->new(); my $workbook = $parser->parse($FileName); die $parser->error(), ".\n" if ( !defined $workbook ); # Following block is used to Iterate through all worksheets # in the workbook and print the worksheet content for my $worksheet ( $workbook->worksheets() ) { # Find […]

Cava打包程序生成的程序在使用模块Excel :: Writer :: XLSX :: Chart时会崩溃

我使用Cava打包工具打包我的Perl程序,perl程序主要包括一些关于使用Excel :: Writer :: XLSX模块将数据写入excel的代码。 但是由Cava打包程序生成的可执行程序在运行时会崩溃,我分析一下情况,发现下面的代码引起的问题: my $chart = $book->add_chart( type => 'line', embedded => 1); 当这个声音被删除,程序不会崩溃,并可以正常生成excel报告。 最大的问题是,在打包成可执行文件之前,我通过命令行使用相同的代码手动运行程序,不会崩溃。 所以我想知道这是卡瓦包装商或其他人的错误,以及如何解决这个问题? 谢谢。

正确的电子表格与Perl :: Writer :: XLSX在Perl中生成

作为一个新的perl用户,很难理解没有太多经验的一切。 Bellow是一个perl脚本的一部分,它应该通过parsing一个自定义软件生成的文本文件来构build一个电子表格。 执行后,xlsx由perl构build,产品组填充到指定列的每一行中,并将产品插入到下一列中。 当我有太多的产品时,他们最终被插入到下一列,以及下一列,并在给定的组中。 理想情况下,我希望将多个产品插入相同产品列的下一行。 目前: ========================== Group | Product_1 | Prodcut_2 | =========================== 理想的情况是: ================== Group | 产品1 | ================== (空白)| 产品2 | ================== (空白)| 产品3 | ================== 这将如何完成? 以下是当前代码的一个片段: my $product_regex ='^Newly listed product: (.*)$'; if ($line =~ /$product_regex/) { $change = $1; if ($some_flag == 1) { $some_flag = 0; push(@{ $product_changes{$group} […]

不在xls中的空白单元格使用perl转换为csv

我有下面的脚本,将xls转换为csv ok,但是它不会将我的xls中的空白单元格转换为csv文件中的空格: #!/usr/bin/perl use strict; use Spreadsheet::ParseExcel; my $sourcename = shift @ARGV or die "invocation: $0 <source file>\n"; my $source_excel = new Spreadsheet::ParseExcel; my $source_book = $source_excel->Parse($sourcename) or die "Could not open source Excel file $sourcename: $!"; my $storage_book; foreach my $source_sheet_number (0 .. $source_book->{SheetCount}-1) { my $source_sheet = $source_book->{Worksheet}[$source_sheet_number]; print "——— SHEET:", $source_sheet->{Name}, "\n"; […]

Perl Excel – 无法在未定义的值上调用方法值。当文本是另一个单元格的子string时删除单元格

我有以下parsingExcel文件的代码。对于每一行,如果一个单元格是同一行另一个单元格的子string,我想要删除这个单元格。 我的数据(在.xls文件中)如下所示: Number1 Text1 Text2 Text3 … TextN Number2 Number3 … NumberN 每个数字和每个文本都在不同的单元格中。 每行的数字和文本的数量可能会有所不同..我想检查如果Text1是Text2或Text3的子string等…如果Text3是Text4 Text5的子string等..如果他们是子string,我想删除这些细胞。 #!/usr/bin/perl -w use strict; use warnings; use Spreadsheet::ParseExcel; use diagnostics; my $parser = Spreadsheet::ParseExcel->new(); my $workbook = $parser->parse('test.xls'); if ( !defined $workbook ) { die $parser->error(), ".\n"; } for my $worksheet ( $workbook->worksheets() ) { my ( $row_min, $row_max ) […]

用Perl生成的csv文件损坏

我使用perl模块Text::CSV_XS创build了一个csv文件。 这是相关的代码: open (my $csv_fh, '>', $tmp_file) or die("Unable to open CSV '$tmp_file' for write"); my $csv = Text::CSV_XS->new({'binary' => 1, 'sep_char' => $config->{'csv'}->{'sep_char'}, 'eol' => "\015\012"}) or die(Text::CSV->error_diag()); $csv->print($csv_fh, ["ID", "ASEITE", "ERDAT", "QUELLE", "AUSGABE", "RESSORT", "AUTNR", "NAME", "ANZHLZEIL", "ANZHLZEICH", "UEBER", "TEXTSP", "ART", "BETRAG", "GRUND", "FEST", "STATUS", "SLEVEL"]); $csv->print($csv_fh, ["A","1","AB","A-5","01","12345","12345","NAME","0","0","Testtext","Testtext2","1","45","","","0",""]); close $csv_fh; 当我尝试使用Microsoft Excel打开文件时,我得到文件扩展名(csv)与文件的格式/结构不匹配的消息。 我被问到如果我相信源。 […]

我可以使用什么文本格式在Excel电子表格中显示原始数据?

我有一个Excel电子表格,有许多人对另一个人的身高和体重的估计。 此外,有些人对两个估计单位留下了评论,如“这个估计考虑到了这样那样的”。 我想从电子表格中获取数据(我已经知道如何parsing它),并用纯文本文件表示,以便我可以轻松地将其parsing为结构化格式(理想情况下使用Perl)。 本来我想用YAML: Tom: Height: Estimate: 5 Comment: Not that confident Weight: Estimate: 7 Comment: Very confident Natalia: … 但现在我觉得这有点难以阅读,我想知道是否有一些文本表格表示,这将更容易阅读,仍然可以parsing。 就像是: PERSON HEIGHT Weight —————————– Tom 5 7 ___START_HEIGHT_COMMENT___ We hold these truths to be self-evident, that all men are created equal, that they are endowed by their Creator with certain unalienable Rights, that […]