Tag: perl

我可以使用Perl从PDF中提取表格吗?

我需要从PDF文档中提取表格对象,最好用Perl编程。 我可以剪切并粘贴到Excel中,但是一旦数据导入到Excel中,表格就需要进行相当多的手动编辑。 我已经做了一些search,但到目前为止,虽然大多数论坛认为大多数API是非常原始的。

Spreadsheet :: WriteExcel基于其他单元格值的条件格式

我试图在我的Excel表中添加条件格式。 不幸的是Spreadsheet :: WriteExcel页面上的例子太简单了,我不知道该怎么做。 我想通过RC10单元格值更改行背景颜色。 在Excel中,我将添加格式公式 =IF(RC10="xxxx";1;0) 我试过在Spreadsheet :: WriteExcel中做这样的事情: my $detail_rest_fmt = $excel->add_format(font => "Calibri", size => 11, valign => "vcenter", align => "right", border => 1); $detail_rest_fmt->set_num_format("[Green]=IF(RC10=\"xxxx\";1;0);[Red]=IF(RC10=\"yyyyyy\";1;0)"); 但没有任何影响。

如何使Win32 :: OLE在64位MS OFFICE上安装

我有两台电脑,一台安装了MS Office 2013 32位,另一台安装了MS Office 64位。 我有Perl代码使用Win32::OLE Perl模块来操作XLS电子表格。 代码在32位个人电脑上工作得很好,但在64位上有问题。 在做了一些研究之后,我发现了。 问题是下面这行代码: use Win32::OLE::Const 'Microsoft Excel .* Object Library'; 我查看了Win32::OLE::Const模块,看起来模块正在registry中查找该库。 当我从32位和64位打印出registry中的所有条目时,我发现这个库在32位上可用,在64位上不可用。 有没有办法在64位上安装该库? 如果没有,是否有任何其他模块,将允许Excel的OLE自动化? 我所有的Perl脚本需要做的是打开XLS文件并将其保存为CSV。 我在所有其他脚本中使用Spreadsheet::ParseExcel和Spreadsheet::XLSX 。 这个特定的XLS文件的问题是,它是密码保护和使用非标准的密码encryption。 所以Spreadsheet::ParseExcel无法打开它。 Win32::OLE没有问题在32位打开文件。 代码可以提供,如果需要的话。 请指教。 谢谢,安德烈

需要更多关于如何使用Spreadsheet :: ParseExcel的例子

我一直在使用Spreadsheet :: ParseExcel列出电子表格的内容。 我已经看到了几个关于如何转储整个电子表格的例子。 我真的很想看看如何更有select地使用这个脚本。 IBM下面的例子基本上转储了所有有数据的单元格的内容。 #!/usr/bin/perl -w use strict; use Spreadsheet::ParseExcel; my $oExcel = new Spreadsheet::ParseExcel; die "You must provide a filename to $0 to be parsed as an Excel file" unless @ARGV; my $oBook = $oExcel->Parse($ARGV[0]); my($iR, $iC, $oWkS, $oWkC); print "FILE :", $oBook->{File} , "\n"; print "COUNT :", $oBook->{SheetCount} , "\n"; print […]

为什么Win32 :: OLE不能与Win2003下的Excel2003对话?

我有一个基于Web的Perl Win32 :: OLE脚本,它在服务器端使用Excel。 在运行Excel2000的Win2000服务器上,它一直在愉快地工作多年。 我们最近升级到Win2003 / Excel2003,现在我得到脚本中的以下错误: Win32::OLE(0.1709) error 0x80070005: "Access is denied" at create_worksheet_lib.plx line 639 eval {…} called at create_worksheet_lib.plx line 639 639行是: $Excel = Win32::OLE->new('Excel.Application', sub {$_[0]->Quit;}) or die "Oops, cannot start Excel"; 看来,Perl不再有权访问Excel。 任何Windows专家可能会帮助解决这个问题吗?

我如何在Perl中读取Excel文件?

我正在寻找一些关于如何编写Perl脚本从excel文件中读取数据的示例/build议,然后使用读取的数据(希望作为string)并将其传递给另一个Perl文件(作为参数)。 目标是build立一个表格,用户可以在表格中input一些数据(ftp目的地或文件名)。 然后,我的程序将抓住这些数据做一些自动化。 它在实现中不必非常优雅…只需要它读取或多或less的数据行。

我的Perl脚本如何确定Excel文件是XLS还是XLSX格式?

我有一个Perl脚本从Excel( xls )二进制文件中读取数据。 但是,向我们发送这些文件的客户端有时已经开始向我们发送XLSX格式的文件。 我已经更新了脚本以便能够读取这些脚本。 但是,客户端有时候喜欢用扩展名为.xls的XLSX文件来命名,这个扩展名使得我的脚本不能使用,因为它使用文件名来确定它是哪种文件types。 XLSX文件是一个包含XML内容的zip文件。 是否有一个简单的方法让我的脚本查看文件,并告诉它是否是一个zip文件? 如果是这样,我可以让我的脚本,而不是只是文件名。

用perl修改xlsx文件

我使用Spreadsheet::ParseExcel::SaveParser成功parsing了xls文件,并使用Spreadsheet::WriteExcel对其进行了修改。 但是使用xlsx文件是完全不同的事情。 我想弄清楚如何使用Spreadsheet::XLSXparsing,以及如何使它与Excel::Writer::XLSX 。 Spreadsheet::ParseExcel::SaveParser有一个SaveAs()方法,可以在分析的xml文件上应用Spreadsheet::WriteExcel方法,但我不明白如何使它与xlsx文件一起工作 编辑:当使用Spreadsheet::ParseExcel::SaveParser和Spreadsheet::WriteExcel我可以写: #!/usr/bin/perl -w use strict; use Spreadsheet::ParseExcel; use Spreadsheet::ParseExcel::SaveParser; # Open the template with SaveParser my $parser = new Spreadsheet::ParseExcel::SaveParser; my $template = $parser->Parse('template.xls'); # Rewrite the file or save as a new file $workbook = $template->SaveAs('new.xls'); # Use Spreadsheet::WriteExcel methods my $worksheet = $workbook->sheets(0); $worksheet->write($row+2, $col, "World2"); $workbook->close(); 我想用xlsx文件做同样的事情。 […]

使用Perl从Excel电子表格中读取法文字符

我正在使用Spreadsheet::ParseExcel来parsingExcel电子表格文件,如下所示 my $FileName = "../excel.xls"; my $parser = Spreadsheet::ParseExcel->new(); my $workbook = $parser->parse($FileName); 并从这样的细胞读取值 $product = $worksheeto->get_cell( $row, 0 )->value(); 问题是,当有一个法国字符,例如à ,它显示ò 为了确保在我使用的parsing中没有错误 print unpack('H*', $product) . "\n"; 所以,当我使用任何在线hexstring转换器我得到的à 。 我也试过了 use utf8; binmode(STDOUT, ":utf8"); 但不是我得到+á 有没有办法获得正确的字符?

填补空的领域

我有一个非常大的制表符分隔的文件(约1200万行),看起来像这样: F1 1 2 700 F2 89 900 10000 19 F3 100 60001 有什么办法可以让这个像这样: F1 1 F1 2 F1 700 F2 89 F2 900 F2 10000 F2 19 F3 100 F3 60001 我试过使用sed脚本,但需要这么长时间。 例如 sed 's/^/F1/' FILE | cut -c3- > FILE1 ; mv FILE1 FILE 我可以在Excel中使用 =IF(a2=="",c1,a2) 并拖下来。 但是,Excel将只允许我加载一定数量的行。 (假设我已经将“F1”复制到C1) awk或sed肯定有一个更简单的方法吗?