免费注册 查看新帖 |

Chinaunix

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

perl 读excel单元格中长字符问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-09-28 11:00 |只看该作者 |倒序浏览
本帖最后由 Oo慢慢来oO 于 2011-09-29 17:46 编辑

需求:有一个excel单元格有1200个字符用perl读出来
问题:perl读excel单元格只能读1008个字符后面的读不出来
其他:在当前目录新建一个test.xls第一个单元格放一个超过1008的字符窜
代码如下:

  1. use strict;
  2. use Cwd;
  3. use Win32::OLE qw(in with);
  4. use Win32::OLE::Const 'Microsoft Excel';


  5. my $EXCEL = '';
  6. my $BOOK = '';
  7. my $SHEET = '';
  8. my $dir = getcwd;
  9. my $dir = $dir.'\\test.xls';


  10. sub initExcel()
  11. {
  12.   $EXCEL = Win32::OLE->GetActiveObject('Excel.Application') || Win32::OLE->new('Excel.Application', 'Quit');
  13.   $EXCEL->{DisplayAlerts} = 'False';
  14.   $BOOK = $EXCEL->Workbooks->Open("$dir");
  15.   $SHEET = $BOOK->Worksheets(1);
  16. }


  17. sub closeExcel
  18. {
  19.         $BOOK->close();
  20.         $EXCEL->quit();
  21. }

  22. sub main
  23. {       
  24.         initExcel();
  25.         my $tmp = $SHEET->Cells(1,1)->{Text};
  26.         print $tmp;
  27.         closeExcel();
  28. }
  29. main();
复制代码
test.zip (1.74 KB, 下载次数: 15)

修改后代码:
  1. use strict;
  2. use Cwd;
  3. use Spreadsheet::ParseExcel;

  4. my $EXCEL = '';
  5. my $SHEET = '';
  6. my $dir = getcwd;
  7. my $dir = $dir.'\\test.xls';


  8. sub initExcel()
  9. {
  10.          $EXCEL = Spreadsheet::ParseExcel::Workbook->Parse($dir);
  11.          $SHEET = $EXCEL->{Worksheet}[0];

  12. }

  13. sub main
  14. {       
  15.         initExcel();
  16.         my $cell = $SHEET->{Cells}[2][0]->{Val};
  17.         print "$cell\n";
  18. }
  19. main();
复制代码
谢谢各位

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2011-09-28 13:49 |只看该作者
回复 1# Oo慢慢来oO
  1. use Spreadsheet::ParseExcel;
复制代码

论坛徽章:
0
3 [报告]
发表于 2011-09-29 12:24 |只看该作者
回复 2# py


    加了以后能显示1040个字符,但还是不够。

论坛徽章:
0
4 [报告]
发表于 2011-09-29 12:58 |只看该作者
  1. #!/usr/bin/perl

  2. use strict;
  3. use Spreadsheet::ParseExcel;

  4. my $file = 'test.xls';
  5. my $xls = Spreadsheet::ParseExcel::Workbook->Parse($file);
  6. my $cell = ${$xls->{Worksheet}}[0]->get_cell(0,0)->value();
  7. print "$cell\n",length($cell);
复制代码
我把内容增加一倍长度,依然能正确读取。

论坛徽章:
0
5 [报告]
发表于 2011-09-29 17:42 |只看该作者
我把内容增加一倍长度,依然能正确读取。
iamlimeng 发表于 2011-09-29 12:58



    没问题了。我对perl模块还不是很了解,把2楼给的代码{use ……;}直接粘贴进去,内容没改,故还是读一部分。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP