Tag: perl

Perl将数据从散列转储到电子表格

我有一个关键和值的散列(数组)。 我想将它们转储到电子表格 %hash key1 -> foo bar key2-> john adam gill key3-> apple banana mango orange 码: use strict; use warnings; use Excel::Writer::XLSX; my $workbook = Excel::Writer::XLSX->new( 'c:\TEMP\filename.xlsx' ); my $worksheet = $workbook->add_worksheet(); my $row = 1; my $col = 1; foreach my $k (keys %hash) { $worksheet->write($row, $col)->{Value} = $k; # title $worksheet->write($row, $col++,)->{Value} […]

将Excel提取到Linux服务器上的文本

我一直在努力将由仪器生成的* .xls文件转换为Linux服务器上的文本格式。 我无法使用Spreadsheet :: ParseExcel处理文件,除非我手动打开它们,在安全警告中注销并保存它们。 否则,它们不被识别为Excel(使用示例代码进行testing)。 !/usr/bin/perl -w use strict; use Spreadsheet::ParseExcel; my $parser = Spreadsheet::ParseExcel->new(); my $file = "/data/excel/matrix.xls"; my $workbook = $parser->parse($file); if ( !defined $workbook ) { print "can't find workbook!!!"; die $parser->error(), ".\n"; } for my $worksheet ( $workbook->worksheets() ) { my ( $row_min, $row_max ) = $worksheet->row_range(); my ( $col_min, […]

不能调用未定义值的方法“工作表”

我有一个问题parsing相同的Perl代码中的Excel文件:我得到这个错误: “无法调用方法”工作表“上一个未定义的值在./parse_pathsim_results.pl行223” 有趣的是,在perl代码中,如果我在parsing其他文件(延迟xls)之前parsing了xls文件, 这里是代码: use Spreadsheet::ParseExcel::SaveParser; $input_delay_csv_file = "./presto/prs/c2x_delay.xls"; $input_slope_excel_file = "./presto/prs/c2x_slope.xls"; $slope_parser = Spreadsheet::ParseExcel::SaveParser->new(); $delay_parser = Spreadsheet::ParseExcel::SaveParser->new(); 如果我使用以下两行代码,则代码有效,但我不想。 $workbook = $delay_parser->Parse("$input_delay_csv_file"); $worksheet = $workbook->worksheet("Sheet1"); 如果上面两行被注释,这就是它产生问题的地方。 $new_workbook = $slope_parser->Parse("$input_slope_excel_file"); $worksheet = $new_workbook->worksheet("Sheet1");

在现有的Excel电子表格中获取单元格的背景颜色

我正在尝试读取现有的Excel电子表格,并将其写入具有所有相同格式选项的新Excel文档中。 我能够读取单元格内容并将它们写入新的Excel表单中,但无法获取单元格的背景颜色。 如果我使用$cell->get_format->{Fill}[2]方法,那么如果单元格具有背景颜色,则会给出数字,如64或65。 如何获得单元格的实际颜色,并将相同的背景颜色应用于新Excel表格中的单元格? 我正在做所有这些事情,因为Spreadsheet::ParseExcel模块中没有方法可以在将数据附加到现有Excel工作表之后设置单元格的背景颜色。 这是我的代码 use Spreadsheet::WriteExcel; use Spreadsheet::ParseExcel; my $parser = Spreadsheet::ParseExcel->new(); my $workbook_parse = $parser->Parse( 'Report.xls' ); my $worksheet_parse = $workbook_parse->Worksheet( "Health_Report" ); my ( $col_min, $col_max ) = $worksheet_parse->col_range(); my ( $row_min, $row_max ) = $worksheet_parse->row_range(); my $workbook = Spreadsheet::WriteExcel->new( "Report_new.xls" ); my $worksheet = $workbook->addworksheet( "Health_Report" ); my $bkgd_color = […]

如何将文本文件转换为bash或perl中的excel

我有一个文本文件,有一些数据如 aaaa:1.0 bbbb:1.1 cccc:1.3 我想用bash / perl将这个隐藏到一个excel表中。所需的输出是这样的 header1 header2 aaaa 1.0 bbbb 1.1 cccc 1.3 我到目前为止所尝试的是 (echo "header1;header2" ; cat a.txt) | sed 's/:/\t/g' > a.csv 但是这似乎不起作用。 我也想将这个文本文件导出到Excel工作表中。

为什么当我尝试使用Perl的Win32 :: OLE在Excel中设置单元格的值时出现exception?

我得到错误Win32::OLE<0.1709> error 0x80020009: "Exception occurred" in PROPERTYPUT "Value"在109行中Win32::OLE<0.1709> error 0x80020009: "Exception occurred" in PROPERTYPUT "Value" 。 代码是Perl。 foreach my $ref_array1 (@$array1) { # loop through the array foreach my $col1 (@$ref_array1) { foreach my $ref_array2 (@$array2) { # loop through the array foreach my $col2 (@$ref_array2) { if ($col1 eq $col2) { this is line […]

为什么Perl的Win32 :: OLE抱怨Excel工作表的“无效索引”?

码 # get already active Excel application or open new my $Excel = Win32::OLE->GetActiveObject('Excel.Application') || Win32::OLE->new('Excel.Application', 'Quit'); # open Excel file my $Book = $Excel->WorkBooks->Open($file); # select worksheet number. Default is 1 (you can also select a worksheet by name) print "worksheet $worksheet\n"; my $Sheet = $Book->Worksheets($worksheet); 其中$worksheet是一个整数作为一个哈希值获得的整数。 Error – Win32::OLE(0.1709) error 0x8002000b: "Invalid index" […]

如果不包含逗号,则将前导引号和尾部引号正则expression

我完全丧失了如何做到这一点。 我的问题:我想要这样做: "A, two words with comma","B","C word without comma","D" "E, two words with comma","F","G more stuff","H no commas here!" … (continue) 对此: "A, two words with comma",B,C word without comma,D "E, two words with comma",F,G more stuff,H no commas here! … (continue) 我使用的软件在文本文件中创build了1,900条logging,我认为它应该是一个CSV文件,但是编写软件的人不知道CSV文件是如何工作的,因为如果单元格中包含逗号,它就只需要引号(对吧?)。 至less我知道在Excel中它把所有东西放在第一个单元格中。 我更喜欢使用某种命令行工具,如perl或python(我在Mac上)解决这个问题。 我不想在Java中做一个完整的项目或者任何需要处理的东西。 任何帮助是极大的赞赏!

使用Perl Excel OLE同时将数据写入不同的Excel文件时出现数据不一致问题

使用下面的Perl脚本,我试图同时打开和写入不同的Excel表单中的数据。 虽然它有效,但我发现这种方法存在一些数据不一致的问题。 即一些file1数据在file2中被看到,反之亦然。 我对Perl OLE句柄没有清楚的理解。 由于它对于不同的文件使用相同的perl OLE句柄,Perl是否将所有不同的文件视为一个? 如果那么如何避免这种情况呢? perl Parser.pl C:\ report1.xlsx perl Parser.pl C:\ report2.xlsx perl Parser.pl C:\ report3.xlsx Parser.pl use Win32::OLE qw(in with); # OLE Automation extensions use Win32::OLE::Const 'Microsoft Excel'; # Extract constant definitions from TypeLib unless (defined $Excel1) { $Excel1 = Win32::OLE->new('Excel.Application', sub {$_[0]->Quit;}) or die "Oops, cannot start Excel"; } […]

Perl – 将带分隔符的文本文件放入带有选项卡的Excel文件中

rest一段时间后回到Perl,我一直在寻找一种方法,将一些制表符分隔的文本文件放入一个数组,然后放入一个Excel文件中; 基本上是为目录中的每个文本文件生成一个Excel选项卡。 通常文本文件是一个相似的格式。 下面的代码已经从例子中拼凑出来,通常会产生我所追求的。 但是,输出会忽略任何选项卡,并在一个string中打印所有文本(每行)。 我正在努力如何在代码中实现制表符分隔符。 我知道我将需要拆分文本文件,因为他们被推入到数组中。 我一直在玩哈希,但是我认为我对这个问题的看法太过分了,这很可能是我错过的一个明显的答案。 use warnings; use strict; use Cwd qw(abs_path); use Spreadsheet::WriteExcel; die "Log path ARG required " unless defined $ARGV[0]; my $path = abs_path( $ARGV[0] ); my $workbook = Spreadsheet::WriteExcel->new("resultsbook.xls"); chdir $path or die "no such directory: $!"; if ( -d $path ) { ## test if $path given […]