免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1395 | 回复: 2
打印 上一主题 下一主题

perl如何将excel中重复的项目取出到新的表中 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-02-26 14:45 |只看该作者 |倒序浏览
工作中遇到了一些问题,就是在excel表中的sheet1里,有这些数据,比如
姓名         年龄             职业                 工资收入
张三         29               教师                  2000
李四         29               教师                  1500
王五         30               工程师                2500
赵六         30               工程师                3000
吴七         31               医生                   3000

现在的需求是在工资收入中查找相同收入的人,然后生成一个新表,将相同收入的人的所有数据放在一个表中,因为工资收入很难事先判定,所以请教各位,如何用perl去实现,最后的结果是有四个sheet,分别是
sheet1:
赵六         30               工程师                3000
吴七         31               医生                   3000

sheet2:
王五         30               工程师                2500
sheet3:
李四         29               教师                  1500
sheet4:
张三         29               教师                  2000

论坛徽章:
6
卯兔
日期:2013-11-26 14:52:02丑牛
日期:2014-02-19 18:01:25卯兔
日期:2014-05-20 20:34:06白羊座
日期:2014-05-23 13:39:232015亚冠之大阪钢巴
日期:2015-08-07 20:57:582015亚冠之大阪钢巴
日期:2015-09-02 14:09:09
2 [报告]
发表于 2013-02-26 16:00 |只看该作者
lz可以看下这个: Spreadsheet::WriteExcel还有这个帖子:http://bbs.chinaunix.net/thread-4066200-1-1.html回复 1# zjx0103


   

论坛徽章:
3
CU十二周年纪念徽章
日期:2013-10-24 15:41:34子鼠
日期:2013-12-14 14:57:19射手座
日期:2014-04-25 21:23:23
3 [报告]
发表于 2013-02-27 09:50 |只看该作者
本帖最后由 mcshell 于 2013-02-27 09:51 编辑
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use Excel::Writer::XLSX;
  5. use Encode ;
  6. sub H{
  7.     my $text = shift;
  8.     return  decode('gb2312',$text);
  9. }
  10. my $workbook = Excel::Writer::XLSX->new('test.xlsx');
  11. my ($worksheet,$count,%hash);
  12. while(<DATA>){
  13.     if($.>1){
  14.         push @{$hash{(split)[3]}} , $_;
  15.     }
  16. }
  17. map{$count++;my $num;
  18.     $worksheet = $workbook->add_worksheet("Sheet$count");
  19.     map{$num++;$worksheet->write_row("A$num",[split/\s+/,H($_)])}@{$hash{$_}}
  20.   }keys %hash;
  21. $workbook->close();
  22. __DATA__
  23. 姓名         年龄             职业                 工资收入
  24. 张三         29               教师                  2000
  25. 李四         29               教师                  1500
  26. 王五         30               工程师                2500
  27. 赵六         30               工程师                3000
  28. 吴七         31               医生                   3000
复制代码
回复 1# zjx0103


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP