Tag: perl

使用Perl Win32 :: OLE从Excel工作表中获取超链接列表

我想更改Excel电子表格中一堆超链接的path。 在searchGoogle之后,我遇到了将超链接添加到电子表格的问题的解决scheme ,但没有改变它们。 微软在这里展示了如何与VBA接近。 由于我想编辑文档中的每个超链接,所以我不知道如何解决的关键步骤是: 获取Perl中超链接对象的列表 提取他们的地址1和1 运行正则expression式来改变path 将更新的path存储在超链接 – >对象中并重复 我是使用OLE的新手,正在被绊倒(1)。 这是我迄今为止所尝试的: #!perl use strict; use warnings; use 5.014; use OLE; use Win32::OLE::Const "Microsoft Excel"; my $file_name = 'C:\path\to\spreadsheet.xlsx'; my $excel = Win32::OLE->new('Excel.Application', sub {$_[0]->Quit;}); $excel->{Visible} = 1; my $workbook = $excel->Workbooks->Open($file_name); my $sheet = $workbook->Worksheets('Sheet 1'); foreach my $link (in $sheet->Hyperlinks ) { […]

将Excel数据写入SQL Server数据库的脚本

我需要一些起点来完成以下任务: 某种脚本应该为传入的excel文件监视某个文件夹。 这些excel文件都有一个同名的工作表。 然后,该脚本应该在每个excel文件的一定范围内运行所有行,并将列数据写入正在运行的Microsoft SQL Server表。 现在我不知道我应该使用什么脚本语言来完成这个任务。 也许perl或windows的电源shell? 希望你能指点我正确的方向。 更新:我不应该也看看SSIS,因为这似乎提供了相当多的function? 谢谢。

从Excel电子表格中删除密码 – 密码已知

我们有一堆由Perl脚本处理的Excel电子表格。 这些电子表格受密码保护(我们知道密码)。 我们需要的是能够使用Perl或PHP从电子表格中删除密码并保存解密的文件。 该脚本将在BSD服务器上运行。

“状态”是否总是从后续行开始parsing?

原始post太长: 使用Spreadsheet :: ParseExcel在XLS文件中获取零个单元格 xls的数据结构 文件看起来相似如下: col1 col2 col3 col4 col5 row1 School 1 row2 Dean John row3 No.stu. 55 row4 some irrelevant stuff row5 School2 2 row6 Dean Tony row7 No. stu. 60 row8 some irrelevant stuff row9 School 3 row10 Dean James row11 No.stu. 56 row12 No. teacher 20 row13 School 4 row14 […]

从Windows任务计划程序执行时,Perl无法打开Excel文件

这是一个非常奇怪的问题。 我有一个Perl(版本5.12)脚本,打开并修改Excel电子表格(版本2007或更高版本)。 下面是打开Excel文件的Perl代码: my $excel = Win32::OLE->GetActiveObject('Excel.Application') || Win32::OLE->new('Excel.Application', 'Quit'); my $book = $excel->Workbooks->Open($excelPath) or die $!; 整个Perl脚本被添加到Windows Server 2008 R2中的任务计划程序,因为它将在每天的同一时间被调用。 当我从任务计划程序运行脚本时,上面的“打开”语句发生错误,并中止,但$! 是完全空白的。 但是,当我从命令行手动运行Perl脚本时,一切正常,包括open-Excel逻辑。 我无法弄清楚命令行执行和调度程序执行之间的区别,以及为什么在Open失败时没有错误消息可用。 请让我知道,如果你有任何线索关于这个问题。 谢谢。 更新 :感谢杰森·格雷,我能够看到错误消息,它抱怨Excel文件无法访问。 但这对我来说没有意义,因为我可以保证文件path是正确的,没有其他人使用同一个文件。 最重要的是,从命令窗口运行Perl脚本完美的作品。 从任务计划程序运行和从命令行运行之间有什么区别? 解决了! 我发现这个奇怪的问题奇怪的解决scheme。 请参考以下链接: Link1 Link2 Link3

在Excel中更改许多文件的格式

我有一个文件夹充满了成千上万的CSV文件。 当我打开一个文件时,数据如下所示: 20110503 01:46.0 1527.8 1 E 20110503 01:46.0 1537.8 1 E 20110504 37:40.0 1536.6 1 E 20110504 37:40.0 1533.6 1 E 20110504 36:17.0 1531.1 1 E 第二列(时间)在小数点前有几分钟和几秒钟。 如果我select第二列,右击并单击格式单元格,select时间,并更改为13:30:55模式,相同的数据如下所示: 20110503 19:01:46 1527.8 1 E 20110503 19:01:46 1537.8 1 E 20110504 0:37:40 1536.6 1 E 20110504 0:37:40 1533.6 1 E 20110504 8:36:17 1531.1 1 E 现在我可以看到小时,分钟和秒钟。 […]

如何select与Excel中特定variables匹配的特定行?

我得到了一个存储在数组中的variables列表。 我知道如何select特定的列和行,但我只想select与数组中的variables匹配的特定行(假设所有variables都是唯一的,只会出现在Excel中)。 这是可能的吗?怎么做? Excel中: Name Code Age John 0123 18 ean 1234 19 我的代码现在: use strict; use warnings; use Spreadsheet::ParseXLSX; @name = ("john", "tommy", "ming", "ean"); ##Loop through the array and search in excel## foreach my $test (@name) { my $parser = Spreadsheet::ParseXLSX->new(); my $workbook = $parser->parse('C:\namelist.xlsx'); if ( !defined $workbook ) { die $parser->error(), […]

在Spreadsheet :: ParseExcel中识别datetypes

我们正在从基于MS Excel OLE的模块迁移到Spreadsheet::ParseExcel (或类似的)。 由于我们有数百个程序正在使用我们的模块,所以我们希望我们提供一个替代品,即返回的数据是相同的。 问题是date – 使用Excel,我们得到一个types为VT_DATE的Win32::OLE::Variant对象。 作为一个解决方法,我们可以通过检查$cell->type() eq 'Date'并返回对象来手动构build。 问题是types不可靠,所以我们不能总是这样做。 Datetypes设置在两个地方。 这是FmtDefault.pm使用的逻辑: if ( ( ( $iFmtIdx >= 0x0E ) && ( $iFmtIdx <= 0x16 ) ) || ( ( $iFmtIdx >= 0x2D ) && ( $iFmtIdx <= 0x2F ) ) ) { return "Date"; } 如果检查失败,我们得到Numeric ,那么它在ParseExcel.pm中进行备份检查: if ( $FmtStr =~ m{^[dmy][-\\/dmy]*$}i […]

Spreadsheet :: ParseExcel $ cell-> value()返回undef

我是新来的Perl和电子表格Excelparsing器模块遇到麻烦。 当我在它自己的行上使用$ cell-> value()时,似乎没有问题,但是当我尝试使用它将值插入数组时,它将返回undef,代码如下所示: for my $row ($row_min .. $row_max) { my @line; for my $col ( $col_min .. $col_max) { my $cell = $worksheet->get_cell( $row, $col ); $value = $cell->value; push @line, $value if defined($cell); print $cell->value; print Dumper $line; } } } 这里打印$ cell-> value; 返回单元格的内容,但打印Dumper $行; 返回undef

保存没有密码的Excel电子表格文件

我试图打开密码保护的Excel,并保存它没有密码。 我知道密码。 当我试图运行下面的代码时,该文件正在使用密码保存。 #!/usr/bin/perl use strict; use warnings, use Win32::OLE qw(in with); use Win32::OLE::Const 'Microsoft Excel *'; my $file = "in.xls"; my $outFile = "out.xls"; my $Excel = Win32::OLE->new ('Excel.Application', 'Quit'); $Excel->{'Visible'} = 0; #0 is hidden, 1 is visible $Excel->{'DisplayAlerts'} = 0; #0 is hide alerts my $Book = $Excel->Workbooks->Open({FileName => "$file", Password => […]