Perl读写Excel

生信分析是用的 .xls 文件 大多是文本格式的文件,是可以被Perl读取的,但遇到真的excel文件时,就不行了,这时候就需要使用模块 使用的模块为: Spreadsheet::ParseExcel Spreadsheet::Writ...

生信分析是用的 .xls 文件 大多是文本格式的文件,是可以被Perl读取的,但遇到真的excel文件时,就不行了,这时候就需要使用模块

使用的模块为:

Spreadsheet::ParseExcel

Spreadsheet::WriteExcel

这里有两个读写Excel的代码,有需要的可以用来参考。

Excel

#!/usr/bin/perl -w
use strict;
use Spreadsheet::ParseExcel;
use Spreadsheet::ParseExcel::FmtUnicode;
my $parser   = Spreadsheet::ParseExcel->new();
my $formatter = Spreadsheet::ParseExcel::FmtUnicode->new(Unicode_Map=>"CP936");  #修正中文乱码问题
my $workbook = $parser->parse($ARGV[0], $formatter);    
 
if ( !defined $workbook ) {
    die $parser->error(), ".\n";
}
 
for my $worksheet ( $workbook->worksheets() ) {            #遍历sheet
 
    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 "\n";
        }
    }
    print "\nA sheet has been read.\n\n";
}

Excel

#!/usr/bin/perl -w 
use Spreadsheet::WriteExcel; 
# 创建一个新的EXCEL文件 
my $workbook = Spreadsheet::WriteExcel->new('Hello.xls'); 
# 添加一个工作表 
$worksheet = $workbook->add_worksheet(); 
# 新建一个样式 
$format = $workbook->add_format();     # Add a format 
$format->set_bold();                   #设置字体为粗体 
$format->set_color('red');             #设置单元格前景色为红色 
$format->set_align('center');          #设置单元格居中 
#使用行号及列号,向单元格写入一个格式化和末格式化的字符串 
$col = $row = 0; 
$worksheet->write($row, $col, 'Hi Excel!', $format); 
$worksheet->write(1, $col, 'Hi Excel!'); 
foreach  $row (10..20) 
{
    foreach  $col (10..20) 
    {
       $worksheet->write($row, $col, "$row+$col", $format); 
    }
}
# 使用单元格名称(例:A1),向单元格中写一个数字。 
$worksheet->write('A3', 1.2345); 
$worksheet->write('A4', '=SIN(PI()/4)'); 
# 添加更多工作表 
$worksheet = $workbook->add_worksheet();
foreach  $row (10..20) 
{
    foreach  $col (10..20) 
    {
       $worksheet->write($row, $col, "$row+$col", $format); 
    }
}
exit; 
  • 发表于 2018-06-01 13:59
  • 阅读 ( 3559 )
  • 分类:perl

0 条评论

请先 登录 后评论
安生水
安生水

350 篇文章

作家榜 »

  1. omicsgene 702 文章
  2. 安生水 350 文章
  3. Daitoue 167 文章
  4. 生物女学霸 120 文章
  5. xun 82 文章
  6. rzx 78 文章
  7. 红橙子 78 文章
  8. CORNERSTONE 72 文章