Tag: perl

如何将Excel文件保存在Win32 :: OLE的工作目录中

我正试图parsing一个Excel文件在Perl中。 在我从中提取所需信息后,closuresExcel文件。 最后,我试图用不同的名字保存一个新的Excel文件在同一个目录下。 但是这个Excel存储在“我的文档”文件夹中。 use Storable ; use Cwd; use Win32::OLE ; use Win32::OLE qw(in with) ; use Win32::OLE in ; use Win32::OLE::Const 'Microsoft Excel'; use Excel::Writer::XLSX; my $Excel = Win32::OLE->new("Excel.Application"); my $excel = $Excel->Workbooks->Add(); my $sheet = $excel->Worksheets(1); $sheet->Activate(); my $new_file = "Temp_file.xlsm"; my $new_excel = cwd.'\\'.$new_file; $new_excel =~ s/\//\\/g; $excel->SaveAs($new_excel); $Excel->{DisplayAlerts} = 0; […]

perl脚本使用工作表名称读取一个xlsx文件(它有许多工作表)

我正在尝试编写一个perl脚本,它使用工作表名称读取一个excel文件(里面有很多工作表)。 我知道如何使用图纸编号访问Excel文件的特定图纸,但不知道如何使用图纸名称读取它。 任何帮助提供高度赞赏。 以下是我编写的使用图纸编号访问图纸的代码: my $Sheet_Number = 26; my $workbook = ReadData("<path to the excel file>"); for (my $i =2; $i<$limit; $i++){ my $cell = "A" . $i; my $key_1 = $workbook->[$Sheet_Number]{$cell}; } 谢谢 – – 编辑 – – 我想通过使用表名打开Excel文件中的特定工作表。 然后从特定的表单中读取数据。 工作表的名称将由用户在从命令行参数运行脚本时input。 下面是我得到了我先前的问题的build议答案后使用的代码: my $parser = Spreadsheet::ParseExcel->new(); my $workbook = $parser->parse("$path"); my $worksheet; if ($worksheet->get_name() […]

检查值存在于perl数组和子string中

我有一个原始数据和Excel文件中的列的数组,我需要比较Excel列和数组,并find匹配。 我需要的是散步应该与我一起走路等等,有没有什么办法可以做到。 can i compare individual string with complete array i am comparing excel row with array using the following way description variable contains string to match with @steps_name array my @steps_name=("1-2 Steps", "5-7 Steps", "8-10 Steps", "11-15 Steps"); foreach $sheet (@{$workbook->{Worksheet}}) { foreach $col ($sheet->{MinCol} .. $sheet->{MaxCol}) { if ($sheet->{Cells}[0][$col]->{Val} eq "DESCRIPTION") { $description […]

将Bash脚本输出附加到Excel

我有一个奇特的情况让我们做一个背景。 背景: 我们有一个内部开发的用于testing企业服务器的脚本。 脚本是用Bash编写的。 脚本的神奇之处在于dmidecode命令。 该脚本在Linux Mint上运行,并通过PXE部署。 脚本的输出包含有关处理器,内存,系统板和机箱部件号等的硬件信息。根据映像引导的设备,此信息始终在变化。 所有这些数据然后被写入一个可读格式,然后手动添加到Excel电子表格中。 Excel工作表分解如下:行1:A1(资产编号),B1(数量“始终为1”),C1(制造商),D1(型号),E1(部件编号),F1(序列号),G1 (RAM(Mb)),H1(CPU数量),L1(CPU速度(GHZ)) 示例数据列名称: 列数据:行2:6112,1,HP,Proliant DL580 G2,325134-001,USE247ML97,1024,2,2.8 所以每行表示一个单独的服务器,这些列包含来自我们之前提到的bash脚本的数据。 目标: 好的,所以我的目标是将bash脚本的输出自动附加到存储在本地CIFS文件服务器上的现有Worksheet中。 由于脚本是在Linux上启动的,Powershell不是一个可行的选项。 我认为Openpyxl可以完成这项工作,但我不知道如何处理这个问题。 我知道我将无法修改现有的工作簿。 鉴于此,我正在考虑在内存中加载现有的文档,并用相同的文件名覆盖。 另外,我看到的所有关于Openpyxl的教程似​​乎都有静态数据,我没有这种奢侈。 这甚至可能或者只是一个微妙的白日梦?

如何使用Perl从自动下载链接下载文件

我试图从LWP :: Simple使用这个代码使用getstore下载一个excel文件: use 5.010; use strict; use warnings; use LWP::Simple qw(getstore); $xls_link = "http://linksample.com/this/link/auto-downloads/when-link-is-entered.xls"; $file_dir = "file/directory/filename.xls" getstore($xls_link, $file_dir); 出于某种原因,该文件没有下载。 我以前用图像使用LWP :: Simple,他们工作得很好。 他们与此唯一的区别是,它是一个Excel文件,并且当您inputURL时,URL自动下载文件。

写入Excel

我正在testing如何填写信息到我的Excel表格,并写了一个简单的testing程序 use Win32::OLE qw(in); use Win32::OLE::Const "Microsoft Excel"; $Win32::OLE::Warn = 3; my $excel = Win32::OLE->new("Excel.Application", "Quit"); my $book = $excel->Workbooks->Add(); my $sheet = $book->Worksheets(1); my $range = $sheet->Range($sheet->Cells(1,1), $sheet->Cells(5,5)); my $mat = $range->{Value}; $mat[1][1] = "x"; #for my $row (@$mat){ # print "$i\n"; # for my $cel (@{$row}){ # $cel = "x"; # } #} […]

如何使用Spreadsheet :: WriteExcel从数字日志数据创build图表?

我使用csv2xls.pl将文本日志转换为.xls格式,然后创build一个图表,如下所示: my $chart3 = $workbook->add_chart( type => 'line' , embedded => 1); # Configure the series. $chart3->add_series( categories => '=Sheet1!$B$2:$B$64', values => '=Sheet1!$C$2:$C$64', name => 'Test data series 1', ); # Add some labels. $chart3->set_title( name => 'Bridge Rate Analysis' ); $chart3->set_x_axis( name => 'Packet Size ' ); $chart3->set_y_axis( name => 'BVI Rate' ); # […]

如何在存储在perlvariables中的Excel工作表中编写公式

use strict use Spreadsheet::WriteExcel; my $Workbook = Spreadsheet::WriteExcel->new('cw.xls'); my $Worksheet = $Workbook->add_worksheet('MRD'); my $Formula= "A10+B10/2"; $Worksheet->write_formula(1,2,'='.($Formula)); exit; 获取时出错: Couldn't parse formula: =A10+B10/2; 注意:在我使用的公式中包含跨表单数据调用。 当我在Excel表格中手工粘贴时,它的工作正常,但是通过程序,我无法把它放在表格中。 请任何人遇到这个问题或有解决办法让我知道。

如何在Excel中使用Perl和OLE打开制表符分隔的文本文件?

本来我试图用Excel打开一个XML文件。 但是,由于这需要很长时间,我自己将XMLparsing为制表符分隔的文本文件。 我以为我在互联网上find了正确的语法。 我使用我用Excelmacroslogging的值来尝试下面的代码。 我有一个18列制表符分隔的文件。 调用“工作表”方法时,下面代码的最后一行出现错误。 错误消息: 不能调用方法“Worksheets”没有包或对象引用在./PostProcessingDev.pl行70。 use Win32::OLE; use Win32::OLE::Const 'Microsoft Excel'; Win32::OLE->Option(Warn => 3); use strict; my $Excel; my $Sheet; my $Workbook; $Excel = CreateObject OLE "Excel.Application"; $Workbook = $Excel->Workbooks->OpenText({Filename =>"$inSelf->{'TXT'}", Origin => xlMSDOS, StartRow => 1, DataType => xlDelimited, TextQualifier => xlDoubleQuote, ConsecutiveDelimiter => "False", Tab => "True", Semicolon => "False", […]

使用Win32 :: OLE Perl模块将Excel中的一系列单元格保存为HTML

我想使用Perl脚本将一系列单元格作为HTML文件保存在XLS工作表中。 我已经search了解决这个问题的方法。 但是还没有find。 但是有一个类似于这个使用Excel VBA的解决scheme: With ActiveWorkbook.PublishObjects.Add(xlSourceRange, _ "C:\Documents and Settings\Tim\Desktop\Page.htm", _ Selection.Parent.Name, _ Selection.Address(), _ xlHtmlStatic, "divExcelExport", _ "TestTitle") .Publish (True) .AutoRepublish = False End With 所以,我试图将其转换为Perl代码,但它给了我以下错误: H:\ test_code \ data> perl a.pl Win32 :: OLE(0.1702)METHOD / PROPERTYGET中的错误0x800a03ec“添加”H:\ test_code \ data> use strict; use warnings "all"; use Win32::OLE; my $Excel = Win32::OLE->GetActiveObject('Excel.Application') || Win32::OLE->new('Excel.Application','Quit'); […]