免费注册 查看新帖 |

Chinaunix

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

求助:从文本文件读数据到excel [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-06-22 17:47 |只看该作者 |倒序浏览
大家帮我看看什么原因,多谢

sub handle_excel_OMS {
        my $Excel = Win32::OLE->GetActiveObject('Excel.Application') || Win32::OLE->new('Excel.Application', 'Quit');  
        my $Book = $Excel->Workbooks->Open("C:\\many\\perl\\1410\\OMS-log.xls");
        $r=1;
                        foreach $file_name(@file_name_OMS) {
                                        open(MYFILE,"Y:\\compare_xml\\$file_name.txt") || die("Could not open file");
                                        while(<MYFILE>) {
                                        chomp;
                                        $C=$_;
                                        if(m/\|/){
                                                                ($A,$B)=split(/\|/,$_);
                                                                                        foreach $sheet_name(@file_sheet_OMS){
                                                                                                        $sheet = $Book->Worksheets($sheet_name);
                                                                                                        #$cell = $sheet->Cells($r,'A');
                                                                                                        $sheet->Cells($r,'A')->{Value} = $A;
                                                                                                        $sheet->Cells($r,'B')->{Value} = $B;
                                                                                                               
                                                                                        }
                                        }
                                                                       
                                        else{$sheet->Cells($r,'A')->{Value} = $C;}
                                        $r++;
                                        }
                        }
}
&handle_excel_OMS;


执行后老报这个错

Can't call method "Cells" on an undefined value at excel.pl line 61, <MYFILE> line 1.

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
2 [报告]
发表于 2011-06-22 21:45 |只看该作者
提示很明确对一个 undef 值调用 Cells 方法了,至于是哪一行错误信息不足不知道。

论坛徽章:
0
3 [报告]
发表于 2011-06-22 21:47 |只看该作者
对VBA一步步查,也可以知道Perl的问题所在。
值print出来看啊。

论坛徽章:
0
4 [报告]
发表于 2011-06-22 21:54 |只看该作者
写之前先用defined检查一下?如果未定义的话给个默认值,比如空格之类。

论坛徽章:
0
5 [报告]
发表于 2011-06-23 09:12 |只看该作者
$Book->Worksheets($sheet_name);

这个函数没记错的话,参数是 1、2、3、4...,即表示第一个sheet,第二个sheet...

论坛徽章:
0
6 [报告]
发表于 2011-06-23 09:22 |只看该作者
$Book->Worksheets($sheet_name);

这个函数没记错的话,参数是 1、2、3、4...,即表示第一个sheet,第二个 ...
shellxn 发表于 2011-06-23 09:12



    哦,sheet name也可以,是不是open(MYFILE,"Y:\\compare_xml\\$file_name.txt") 这句没加"<"?

论坛徽章:
0
7 [报告]
发表于 2011-06-23 10:04 |只看该作者
哦,sheet name也可以,是不是open(MYFILE,"Y:\\compare_xml\\$file_name.txt") 这句没加"
shellxn 发表于 2011-06-23 09:22



    这里好像没有问题,应该在定义excel那里有问题

论坛徽章:
0
8 [报告]
发表于 2011-06-23 13:32 |只看该作者
算了,你直接用vba吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP