打印

用Perl读写Excel文件

作者 supersun. Posted in Perl

最近写一个小脚本,读取Excel文件中的内容,经过处理后,生成新格式的Excel文件,将一些用法着一个小小的总结。

 

读取Excel文件中的内容,模块Spreadsheet::ParseExcel的一些常见用法

 

 

得到一个workbook对象:

my $excel=new Spreadsheet::ParseExcel;

my $fmt=Spreadsheet::ParseExcel::FmtUnicode->new(Unicode_Map=>"cp936");

my $workbook=$excel->Parse($file,$fmt);

 

 

得到excel文件中的表格数目:

$sheet_nums=$workbook->worksheet_count();

 

 

得到一个表格对象(这里的$sheet_num是表格的索引,从0开始计数):

$sheet=$workbook->worksheet($sheet_num);

 

获取表名:

my $sheetname=$sheet->get_name();

 

转换编码

$sheetname=decode('utf-8',$sheetname);

 

得到最大、最小行序(不是很准)

my ($row_min, $row_max)=$sheet->row_range();

 

取单元格的值,在取之前最好能判断一下:

if($sheet->get_cell($row_num,$col_num)){

my $code=$sheet->{Cells}[$row_num][$col_num]->Value();

}

 

 

 

 

生成Excel文件,模块Spreadsheet::WriteExcel的一些常见用法

 

 

定义一个workbook对象

my $workbook = Spreadsheet::WriteExcel->new($filename);

 

定制一种格式

my $fmt4= $workbook->add_format(

border  => 1,

bold    => 1,

color   => 'black',

size=> 11,);

 

border样式为1,具体的样式可以从方档中查询

bold 加粗

color字体颜色

size字体的大小

 

也可以这样设置格式:

 

my $fmt_OK= $workbook->add_format();

$fmt_OK->set_bg_color('green');

$fmt_OK->set_border_color('black');

$fmt_OK->set_border(1);

 

添加一个表格,注意中文表名,要设置编码,gbk或utf-8,自己试一试,我也搞不明白:

$sheetname=decode('gbk',$sheetname);

my $sheet=$workbook->add_worksheet($sheetname);

 

在某个单元格中填写数据(注意,对于写过的表格,不要再使用write,这样生成的excel文件打开时会报错),给定行、列、内容、格式,其中格式可能省略:

$sheet->write($row,1,$records[0],$fmt);

设置列宽,第3列至第34列列宽为2,(这里的参数是列的索引,索引是从0开始的):

$sheet->set_column(2,33,2);

设置行高($row为行索引):

$sheet->set_row($row,13.5);

 

关于合并单元格的内容,(参数分别为左上角行序、左上角列序、右下角的行序、右下角列序、内容、格式)再次提醒,不要在同一个格中重复写文,不然生成的excel表格打开时报错:

$sheet->merge_range($row,0,$row+1,1,decode('utf-8',"日期"),$fmt);

如果有其他们需求可以在模块的文档中搜索"merge",文档中有示例。

 

  • Renatafe

    发布于 2012-05-17 17:58:16

    Мы предлагаем: сервер под хрумер, xrumer full, xrumer warez, скачать бесплатно xrumer crack, xrumer рабочий. Программа XRumer (как пользоваться хрумером) - предназначена для массовой рассылки в форумы, гостевые книги, блоги, доски, каталоги и т. д. Сайт http://xrumer8.ru/

    回复评论

  • LeraVera

    发布于 2012-05-13 04:56:25

    Аптека: мужской форум сиалис, слушать песню мамонтёнка, левитра купить 5 мг, сиалис купить спб, сколько стоит сиалис, левитра бренд, сиалис противопоказания, виагра левитра сравнение, левитра в украине, сиалис софт, виагра таблетки цена. Сайт http://vita-apteka.ru/

    回复评论

  • VitaApteka

    发布于 2012-05-02 07:32:30

    Аптека: сиалис отзывы форум, виагра таблетки действие, левитра описание, сиалис спб, левитра отзывы форум, сиалис почтой, сиалис виагра отзывы, не помог сиалис, краснодар сиалис, продам сиалис, слушать песню мамонтёнка.

    回复评论

  • lerafuxsi

    发布于 2012-01-17 19:54:21

    Магазин обуви: женская обувь мида Liska (Лиска), женская обувь милана Liska (Лиска), женская обувь для прогулок Liska (Лиска), модельная женская обувь Liska (Лиска), необычная женская обувь Liska (Лиска).

    回复评论

发布评论...