将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, $col_max ) = $worksheet->col_range(); for my $row ( $row_min .. $row_max ) { for my $col ( $col_min .. $col_max ) { my $cell = $worksheet->get_cell( $row, $col ); next unless $cell; print "Row, Col = ($row, $col)\n"; print "Value = ", $cell->value(), "\n"; print "Unformatted = ", $cell->unformatted(), "\n"; print "\n"; } } } 

我已经尝试将扩展名更改为* .prn,它允许我手动打开文件,而不会出现警告,但是它们无法被Spreadsheet :: ParseExcel识别。

这些文件仅在第一张纸上包含8列数据。 我想将它们转换为文本文件,并使用它们在我的Perl脚本中查找值。 这里是一些在Excel中的示例数据:

 Gene Target Barcode1 Barcode2 Barcode3 Barcode4 Barcode5 Barcode6 MOTOR MOTOR_1 343 453 432 345 543 342 MYCN MYCN_2 342 98 87 876 54 765 

我的最后一个select是使用VBA,但如果可能的话,我会坚持Perl / Shell代码。 有没有一个简单的解决这个问题?

谢谢,

这不是特别优雅,但是您可以尝试使用Linux命令“strings”来首先从电子表格文件中提取可打印的字符。 然后,您可以parsing输出,直到看到列标题,数据应该在那之后。