大头
Table_bottom

标签云
Table_bottom

分类
Table_bottom

日历
十一月
272829303112
3456789
10111213141516
17181920212223
24252627282930
Table_bottom

评论
Table_bottom

留言
Table_bottom

微博
Table_bottom

热门文章
Table_bottom

随机文章
Table_bottom

豆瓣上谁关注这里
Table_bottom

链接
Table_bottom

搜索栏
Table_bottom

RSS
RSS Link
Table_bottom

功能
Table_bottom

页面
Table_bottom

计数器
482212
Table_bottom

访客统计
Table_bottom

存档
Table_bottom

初学Perl之四

loveisbug posted @ 2008年11月15日 01:41 in 娱乐 with tags Perl , 2749 阅读

今天要把提取的字串输出到excel文件中。

一开始是直接写,用'\t'移到下一个单元格,但是不会换行。后来google上搜一搜知道要用Spreadsheet::WriteExcel模块。运行程序报错说“Can't locate Spreadsheet/WriteExcel.pm”,再搜了搜知道要打开PPM(Perl Package Manager)去安装这个模块。用它,写excel文件就方便了。我没有看文档,现在的需求还很简单。

然后碰到下一个问题,写中文乱码。之前搜索的时候看到过很多关于这个问题的帖子,这次是Unicode::Map模块。一样要去PPM安装。一样的方便。

程序如下:

  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use Spreadsheet::WriteExcel;
  5. use Unicode::Map();
  6.  
  7. my $workbook = Spreadsheet::WriteExcel->new("result.xls");
  8. my $worksheet = $workbook->add_worksheet("hymz");
  9.  
  10. my $Map = new Unicode::Map("GB2312");
  11. my $subset = "书名:</td>";
  12. my $cnt = 0;
  13. my $modflag = 0;
  14.  
  15. while(<>)
  16. {
  17.         if($modflag == 1)
  18.         {
  19.                 #get the book name.
  20.                 $cnt = $cnt + 1;
  21.                 $_ =~ m!>(.*?)</a>!;
  22.                 $worksheet->write($cnt - 1, 0, $cnt);
  23.                 $worksheet->write_unicode($cnt - 1, 1, $Map->to_unicode($1))
  24.         }
  25.  
  26.         my $offset = 0;
  27.         $offset = index($_, $subset);
  28.         if($offset == -1)
  29.         {
  30.                 $modflag = 0;
  31.         }
  32.         else
  33.         {
  34.                 $modflag = 1;
  35.         }
  36. }
  37. $workbook->close();
  38.  

主要参考这篇文章:实例解说:用Perl来分析并生成中文Excel文件


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter